2011-04-06 18 views
0

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

ご協力いただきありがとうございます。

答えて

1

あなたのアプローチを忘れてしまったら、何もしないでホイールを再発明し、おそらくパフォーマンスが悪化するでしょう。必要なのはピクセル完全な衝突検出で、おそらく基本的な物理を含んでいるので、すでに大量の作業を話しています。質問に答えるためにしようと常に推測

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

+0

ビットマップデータとポイントを使用して実際にピクセルの完全な衝突を行うのは高速ですが、ほとんどのPCでは気付くことができませんが、携帯端末にフラッシュアプ​​リケーションを移植するとその違いがわかります。 – Saad

+0

私はあなたのコメントを得ることはかなり確信していませんが、私の答えはピクセルのビットマップに基づく衝突が遅いピクセルを意味するのですか?私が同意する声明を出しているのであれば、bitmapdataクラスは非常に速いです。 –

0

その:あなたはこれを使用して、ゲームのための設計方法でレベルを構築したい場合は、これがどのように素晴らしい/冷却/簡単にあなたの心を吹きますよこのように、未知のものがたくさんあるためです。言われているように、プログラミングでは、問題を解決する方法はいくつかあります。あなたの衝突検出ルーチンを調べてください - もしhitTestPointで作業していて、localToGlobalでテストされていたポイント(mouseX、Y、またはあなたのメインアクター)のx、y変数をテストする必要はないでしょう。あなたの衝突オブジェクト。それらの2つの主題を読んで、この質問が疑問になるかもしれません。

trace(_wall.curLoc); 
:あなたは、その後に対してテストできる点として

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

とあなたの親クラスからそれらを取得する:任意のレートで

、あなたはgloblaToLocalを活用することで、あなたのWall.asインスタンス内の相対座標を更新することができ

私はあなたが壁のシンボルのtransformプロパティを操作することによって、何をしようとして達成できたと仮定し

+0

は、スプライトの深さに関係なく、localToGlobalを動作させます(スプライトobjはステージ上にある別のスプライトオブジェクトの下に作成されている可能性がありますか? – Saad

+0

@Saad私はそれを信じますがlocalToGlobalとglobalToLocalは、 http://www.emanueleferonato.com/2010/06/22/understanding-as3-localtoglobal-method/を参照してください。 –

0

を助け、正直なところ、私の希望Ascension Systemsと同意し、あなたの衝突テストルーチンを放棄して、何か違うものを探してください。

あなたのゲームに物理エンジンを使用する必要はないかもしれません。その場合は、hitTestObjectを使用して衝突検出を行います。