0

Flash CS4 でマルチレベルのダンジョン アドベンチャーを作成しようとしています。レイアウトはレベルと呼ばれるシンボルから作成されたインスタンスであり、シンボル内には複数の壁サブシンボル (壁)、壁のインスタンスがあります。Wall.As から呼び出される、プレイヤーが壁を通り抜けるのを止めるコリジョン ルーチンがあります。レベルは中心点 (0,0) を中心に描画されます。Level (レベル) のステージでインスタンスを作成すると、コリジョン テスターは、ステージに表示される「実際の」xy 座標ではなく、約 0,0 で描かれた壁の xy 座標を使用しています。だから私が知る必要があるのは、親に描かれたXYを上書きして、ライブステージ情報で各壁サブシンボルのxyを「更新」する方法です。残念ながら、レベルが大きいためスクロールする必要があるため、更新する必要があります(静的に保つことはできません)。

アドバイスありがとうございます。

4

3 に答える 3

1

敬意を払ってあなたのアプローチを忘れてください。あなたは無駄に車輪を再発明していて、おそらくパフォーマンスが低下することになります. 必要なのは、ピクセル単位で完璧な衝突検出であり、おそらく基本的な物理学も含まれているため、すでに膨大な量の作業について話し合っています。ゲームの設計方法でレベルを構築したい場合は、これを使用してください。

http://www.gotoandlearn.com/play.php?id=135

于 2011-04-06T15:04:53.520 に答える
0

多くの未知数があるため、このような質問に答えようとするときは常に推測です。そうは言っても、プログラミングでは、問題を解決する方法は常にいくつかあります。衝突検出ルーチンを調べます。hitTestPointを使用し、テスト対象のポイント (mouseX,Y またはメイン アクター) をlocalToGlobalで作業した場合、衝突オブジェクトの x、y 変数をテストする必要はおそらくないでしょう。これらの 2 つのテーマをよく読んでください。

とにかく、globlaToLocal を利用して、Wall.as インスタンスの相対座標を更新できます。

public function get curLoc():Point 
{
    return globalToLocal(new Point(this.x, this.y));
}

親クラスからそれらを取得して、テストできるポイントとして:

trace(_wall.curLoc);

それが役立つことを願っています

于 2011-04-06T15:40:31.097 に答える