1

私は現在、いくつかの AS3 プラットフォーム ゲームで遊んでおり、プラットフォームに対してよりクリーンなオブジェクト ベースのアプローチを採用しようとしています。要するに、プレイヤー オブジェクトがプラットフォームと衝突しているかどうかを検出しようとしています - ala:

if (!player.hitTestObject(this)) {
    //player falls
}

ただし、問題は実際にプレイヤー オブジェクトを参照することにあります。プレイヤーは (ステージから) 次の場所にいます。manager.player - プラットフォームは manager.level.foreground にあります。

上記のように、プレーヤーからプラットフォームのすべてのインスタンスにコンストラクターを渡すことなく、フォアグラウンド オブジェクト内からプレーヤー オブジェクトを実際に参照する方法はありますか?

4

2 に答える 2

2

あなたができる

if (!this.parent.parent.player.hitTestObject(this)) {
    //player falls
}

しかし、変更に対して非常に柔軟性がなく、デバッグの悪夢を引き起こす可能性があるため、これには強くお勧めしません:)

マネージャーに子の間の衝突を処理させる方がきれいではないでしょうか?

于 2013-09-28T20:10:52.583 に答える
1

プレイヤー オブジェクトが作成された場所への静的参照を取得できます。そのクラスでは、基本的にプレイヤーへの参照を返します。

于 2013-09-28T20:05:28.033 に答える