0

我在我的项目中使用 starling 和 tweenMax 框架。我遇到的麻烦是这样的:

为了沿不同路径制作动画,我使用的是 tweenmax。

有一个 _leaderEnemy 沿着一条路径动画,我正在将其他几个 _shooterEnemy(它们属于同一类)推入其中。

public function createEnemies(enemyNo:int, path:Array, offset:int):void
{
    for(var i:uint=1;i<=enemyNo;i++){
        if (i==1){
            _leaderCount++;
            _leaderEnemy = new ShooterEnemy();
            _leaderEnemy.x=600;
            _leaderEnemy.y=300;
            _leaderEnemy.name="_shooterEnemy"+_leaderCount;
            this.addChild(_leaderEnemy);
            leaderEnemyArray.push(_leaderEnemy);
        }
        else
        {
            _leaderCount++;
            _shooterEnemy= new ShooterEnemy();
            _shooterEnemy.x=0;
            _shooterEnemy.y=(offset*(i-1));
            _shooterEnemy.name="_shooterEnemy"+_leaderCount;
            trace("no: "+_shooterEnemy.name);
            leaderEnemyArray.push(_shooterEnemy);
            _leaderEnemy.addChild(_shooterEnemy);
        }
    }

现在我想使用 _leaderEnemy 和其中的 _shooterEnemy 与 _shooterHero 之间的椋鸟来检查碰撞。

运行此数组成功检查与整个组的冲突,即 _leaderEnemy 但不是其中的单个组。

从技术上讲,我应该能够通过以下方式做到这一点:

var Track:Object;
for(var i:uint=0;i<leaderEnemyArray.length;i++) {
    Track=leaderEnemyArray[i];      
    if (Track.bounds.intersects(_shooterHero.bounds)){
        Track.rotation=deg2rad(70);             
    }
}

这可能是我正在做的愚蠢的事情。但我一直无法解决这个问题。

对此的任何帮助将不胜感激。

我还有一些其他问题:

  1. 我可以在 _shooterEnemy 的班级内检查与 _shooterHero 的碰撞吗?

我努力了:

if (this.bounds.intersects(stage.getChildByName("_hero"))){
}

虽然它没有用。

  1. 我可以检查一个敌人与舞台上的所有东西的碰撞,以便我可以为他的每个联系人分配单独的功能吗?例如:击中英雄:死;与另一个敌人击中:转身

如果您需要更多信息,我很乐意提供。

谢谢你。

4

2 回答 2

1

我可以检查一个敌人与舞台上的所有东西的碰撞,以便我可以为他的每个联系人分配单独的功能吗?例如:击中英雄:死;与另一个敌人击中:转身

当然可以。你应该!这大致是碰撞引擎的工作原理。

运行此数组成功检查与整个组的冲突,即 _leaderEnemy 但不是其中的单个组。

没有。它行不通。因为 bounds 属性使用父坐标。这意味着您可以将每个子显示(同一容器)彼此相交。但是您不应该将 A 的子显示与 B 的子显示相交。

除非您将每个边界坐标(本地)转换为全局坐标。

http://doc.starling-framework.org/core/starling/display/DisplayObject.html#localToGlobal()

于 2014-06-05T17:16:06.297 回答
0

使用 Track.bounds.intersects 是检查碰撞的一种方法。另一个是使用 starling.displayDisplayObject 的 hitTest方法

您还可以检查通过勾股定理类型计算计算出的英雄和其他敌人的距离。

你在检查敌人吗?如果你有很多敌人,你可能想研究“植绒”算法。Keith Petes 在他的《Advanced Actionscript Animation》一书中很好地涵盖了这个主题。

于 2013-10-25T19:21:35.413 回答