3

ユーザーがキャラクターを誘導して、Flash AS3 で迷路を作成したかったのです。これ (以下) を使用してみましたが、すべての迷路の壁を個別に作成し、それぞれに衝突検出を設定する必要があります。同じことを達成する簡単な方法はありますか?

monkey.addEventListener( Event.ENTER_FRAME, handleCollision)

function handleCollision( e:Event ):void
{
    if(monkey.hitTestObject(wall))
       {
           trace("HIT");
       }
       else
       {
           trace("MISS");
       }
}
4

3 に答える 3

1

これを行う 1 つの方法は、メソッドを使用hitTestPoint()して、コーナーのいずれかが壁に当たったかどうかをテストすることです。

hitTestPoint()単一の位置のみをテストして、その点がオブジェクトと衝突するかどうかを確認します。これは、サルの左上隅が壁に触れているかどうかをテストする方法です。

// I am assuming that x,y is the top left corner of your monkey

if (wall.hitTestPoint(monkey.x, monkey.y, true))
{
   // top left collided with wall
{

したがって、すべてのコーナーに対して同じことを行うことができます。または、必要に応じて、サルをチェックする衝突ポイントを決定することもできます。

精度のレベルによっては、この方法が必要に応じてうまく機能する場合があります。しかし、ピクセルの完全な衝突が必要な場合は、次のリンクをチェックしてください。

http://www.freeactionscript.com/2011/08/as3-pixel-perfect-collision-detection/

于 2013-04-18T17:51:32.840 に答える
1

なぜそれは個々の壁を意味するのでしょうか?? 迷路の形/壁を描いて一度にすべて選択してみましたか? 右クリックして選択をムービークリップに変換し、好みの名前を付けます。次に、インスタンス名にも「wall」を付けます。これを実行してみると、handleCollision関数が機能するはずです。

または、衝突チェックでからhitTestObjectに変更してみてください...hitTestPoint

function handleCollision(e:Event):void
{ 
 if (wall.hitTestPoint (monkey.x, monkey.y, false)) 
    { trace("HIT"); } 
else 
    { trace("MISS"); } 
}

詳細については、この記事も参照してください。
http://www.actionscriptmoron.com/AS3Tutorials/hittest-hittestpoint/

于 2013-04-18T18:03:38.100 に答える