0

as3で簡単なヘビゲームを作っています。私が抱えている問題は、要素のストロークがわずかに重なっているため、ヘビが隣接する正方形のリンゴを通り過ぎると、ヒットテストオブジェクトがトリガーされることです。ヘビまたはリンゴのサイズまたはストロークを小さくすると、グリッドに適切に整列しません。hittestobjectを使用する方法はありますが、それをトリガーするオブジェクトの領域を減らします。つまり、オブジェクトの中心に当たった場合にのみトリガーしますか?

//this will hit when snake is adjacent due to overlapping strokes
if(snake.hitTestPoint(apple.x,apple.y,true))
{
    trace('hit');
}

//this doesnt work for some reason
if(snake.hitTestPoint(apple.x+2,apple.y+2,true))
{
    trace('hit');
}

一番下のコードの値をトレースしたとき、値は期待されるものですが、何らかの理由でhitTestPointがトリガーされません。奇妙なことに、+ 1を実行しても機能しますが、ストロークが2であるため、少なくとも+3が必要です。apple.x + nを変数として設定し、hitTestPointでその変数を使用すると、トリガーされません。また、トリガーされないすべての場合、エラーは発生せず、すべてのトレース値が疑わしいものです...

4

1 に答える 1

1

snake-movieclipに、中央として機能する別のクリップを追加してから、snake-clip全体ではなくcenter-clipをテストします。

if(snake.center.hitTestPoint(apple.x、apple.y、true)){trace('hit'); }

これがあなたの問題を解決する最も簡単な方法だと思います。

于 2011-08-28T11:59:28.990 に答える