0

こんにちは、言葉で説明するのが難しい質問が 1 つあります。写真を載せて説明してみましょう。私はstackoverflowの新しいユーザーなので、投稿に写真をアップロードできないので、リンクを貼ります:http://tinypic.com/r/kbrpt2/6

私が欲しいもの:
私は自分のプレーヤー (青いボール) をポイント 2 に移動し、関数 player.hitTestObject(Wall) を呼び出して値 false を取得できるようにしたい

ので、私の問題は:
プレーヤー (青いボール) をポイント1または2と関数player.hitTestObject(Wall)を呼び出すと、値trueが返されます

基本的に:
関数player.hitTestObject(Wall)がオブジェクト(形状)の灰色の部分に触れたときにのみtrueを返すようにしたいです。プレイヤー オブジェクトが Wall オブジェクトの中央にあり、灰色の部分 (形状) に触れていない場合は false を返します。

1 つの解決策 (最適ではありません):
解決策の 1 つは、3 つのオブジェクトを作成し、プレイヤー オブジェクトが壁に触れているかどうかを 3 回テストすることです。この単純な例では問題ありませんが、より大きなオブジェクトを作成すると、コードが乱雑に見えます。

誰かが他の解決策を知っていれば、私は感謝します。

4

1 に答える 1

0

hitTestObject は、クリップのバウンディング ボックスを使用して衝突をチェックしていると思います。代わりに hitTestPoint を見たいと思うかもしれません

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestPoint ()

ここでの考え方は、壁がポイントの x/y に対して hitTestPoint を呼び出すということです。shapeFlag を true に設定してください。

myWall.hitTestPoint(point.x, point.y, true);

私の2セント-これらの組み込みの衝突メソッドはかなり遅いと思います。壁を個々の長方形に分割できれば、より効率的な方法で基本的な計算を使用して衝突をチェックできる場合があります。

于 2012-12-02T18:49:23.983 に答える