在动作脚本3中,如何使用碰撞来处理我的两个对象?

时间:2014-12-23 13:49:26

标签: actionscript-3

我正在创建一个简单的滑块射击游戏,其中有随机衍生的敌人和一个可玩的角色。如果这两个对象中的一个相互碰撞,那么我希望它们被销毁。然后我的最后一场比赛在屏幕上显示最终得分。我知道这涉及命令hitTestPoint,但我不知道如何实现它。我的两个对象都是在不同类中的影片剪辑。可玩角色被称为PlayerFront,其实例被称为PlayerFrontOne,而敌对象被称为EnemyScout,但在舞台上没有它的实例,因为它在游戏过程中随机生成。我到目前为止的代码是:

public function PlayerFront()
{
  stage.addEventListener (Event.ENTER_FRAME, collision);
}

function collision(evt:Event)
{
    if (PlayerFront.hitTestPoint(EnemyScout, true))
    {
        score = score + 1;
        trace(score);
    }
}

我一直在犯错,但无法解决原因。

1 个答案:

答案 0 :(得分:0)

例如:

 var enemy : EnemyScout =  new EnemyScout();

 public function PlayerFront() {
      stage.addEventListener (Event.ENTER_FRAME, collision);
    }

    function collision(evt:Event) {
        if (PlayerFront.hitTestObject(enemy)) { //here you need to test with EnemyScout instance
            score = score + 1;
            trace(score);
        }
    }

如果你有很多EnemyScout实例,那么你需要循环抛出它们并检查每个对象的碰撞。

类似的东西:

你可以用enemys创建一个数组

 var enemy_arr : Array = [];

每当你创建一个enemey时,你会将它推送到你的数组

 var enemy : EnemyScout =  new EnemyScout();
 enemy_arr.push(enemy);

现在你可以像这样循环抛出你的敌人阵列:

    ...
        function collision(evt:Event) {
            if (areHittingEnemy()) { //here you need to test with EnemyScout instance
                score = score + 1;
                trace(score);
            }
        }

       function areHittingEnemy() : Boolean {
           for each(var e in enemy_arr){
               if(PlayerFront.hitTestObject(e)){
                  //if you want you cand remove this enemy from array
                  return true;
               }
           } 
           return false;
       }

希望这会有所帮助。一切顺利!