シンプルなフラッシュゲームを作っていますし、与えられたレベルで壁を打つからアバターを維持しようとしています、ここで私が書いたコードがあり、そのActionScript 3の壁ヒット検出
var hitWall:Boolean = checkWallHitlvl1();
if (downKeyIsBeingPressed )
{
avatar.moveABit(0, 1);
if(hitWall)
{
avatar.moveABit(0, -5);
}
}
else if (upKeyIsBeingPressed )
{
avatar.moveABit(0, -1);
if(hitWall)
{
avatar.moveABit(0, 5);
}
}
else if (leftKeyIsBeingPressed )
{
avatar.moveABit(-1, 0);
if(hitWall)
{
avatar.moveABit(5, 0);
}
}
else if (rightKeyIsBeingPressed)
{
avatar.moveABit(1, 0);
if(hitWall)
{
avatar.moveABit(-5, 0);
}
}
十分に簡単hitWallかどうかをチェックしアバターがレベルの壁に当たったとき、このコードの問題は、私が右から壁に当って左に動こうとしているにもかかわらず、hitWallが壁が当たった場所からチェックしていないので、実際にどちらの方向からプレイヤーが特定の壁に当たっているのかを実際に把握する必要なく、この作業を行う方法はありますか?私はアバターを右から動かすと自動的に左に動かしましたが、うまく動かなかったそうですね...
お願いします。
ありがとう= D
EDIT1:私はそれが動作するようになりましたが、それは私が後方に5つのピクセルの処理に持っているのでちょっとぎくしゃく見える、私はフラッシュのhitTestObject以来、以来、残念ながら逆方向に1つのピクセルをステップすることはできません、コードを編集しましたまだtrueを返します(checkWallHitLvl1()は基本的にhitTestObjectを使用してプレーヤーが壁に当たったかどうかを確認します)、提案はありますか?
EDIT2:私は、彼らはすべてのパス私は、コードを上に掲示する場合だけで、いくつかのより多くのテストを実行し、それが正常に動作を確認する必要があり、それを修正する方法を発見し、基本的に私はちょうどチェックする4つのブール変数を使用しましたどの方向に壁に当ってそこから行ったのですか?= D
コードに欠陥があります。テストが失敗し、それ以上動かなくなった場合、テストが実行されます。ここでの脆弱性は、テストが起こってアバターがすでに壁に入っているということです。最初に移動し、失敗したらテストを戻す必要があります。 –
私はこれを調べて、それがうまくいくかどうかを確認します。助言= D – r3x
の方がうまくいきましたが、期待通りに滑らかではありません。壁に当たった後にステップを進んでも、actionscrtiptのhitTestObjectは本当に、私はそれが動作するために5つのステップのように後ろに行かなければならなかったし、ちょっとぎこちなくて、そんなに滑らかに見えません...他の提案? アドバイスありがとうございます=) – r3x