减少hittestobject的面积 - flash cs5

时间:2011-08-27 03:29:52

标签: actionscript-3 flash-cs5 hittest

我正在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中的变量,它将不会触发。对于没有触发的所有情况,我都没有错误,所有跟踪值都是你怀疑的......

1 个答案:

答案 0 :(得分:1)

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

如果(snake.center.hitTestPoint(apple.x,apple.y,真)) {     迹( '命中'); }

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