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

在蛇形剪辑中,添加另一个作为中心的剪辑,然后测试中心剪辑而不是整个蛇形剪辑。

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

我猜这是解决您的问题的最简单方法。

于 2011-08-28T11:59:28.990 回答