0

Main クラスには Enemy オブジェクトの配列があり、Player クラスには Bullet オブジェクトの配列があります。この中で、プレイヤーの弾丸と敵との衝突をテストするメソッドが必要です。衝突が検出されたら、Bullet の destroyBullet() メソッドと Enemy の destroyEnemy() メソッドを呼び出します。

両方の配列が同じクラス内にある場合、これがどのように行われるかをおそらく理解できますが、そうでない場合は困惑します。

4

1 に答える 1

1

メインクラスで弾丸配列も保持しない理由はわかりませんが、これをそのまま実行したい場合は、Player.bulletsへのパブリックアクセスが必要になります

これはメインクラスから機能するはずです。これを、ゲーム ループで実行される checkCollisions 関数内に配置する必要があります。

//loop through bullets first, because if no bullets are fired, no point in checking
for each(var bullet:Bullet in player.bullets) {
  for each(var enemy:Enemy in enemies) {
    if(bullet.hitTestObect(enemy)) {
      bullet.destroyBullet();
      enemy.destroyEnemy();
    }
  }
}

弾丸または敵を破壊するには、スプライトを削除してクリーンアップするだけでは不十分であることを覚えておいてください。また、各オブジェクトが格納されている配列をスプライスする必要があります。

于 2013-04-11T16:47:28.860 に答える