2011-08-27 23 views
0

我正在用as3做一个简单的蛇游戏。我遇到的问题是元素上的笔画略有重叠,因此当蛇通过邻近方块中的苹果时,它会触发测试对象。如果我减小蛇或苹果的大小或中风,那么它们不会正确排列到网格。有没有一种方法可以使用hittestobject,但是会减少触发它的对象的面积。即只有在触及物体中心时才触发?减少hittestobject的面积 - flash cs5

//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中使用该变量,则不会触发。也在所有情况下,它不会触发我没有得到任何错误和所有跟踪值是你会怀疑...

+0

不可见的矩形与蛇重叠,但比蛇小,并用它来检测碰撞? – Dair

+0

的作品,但即时通讯寻找更有效的解决方案。 – Yamiko

回答

1

在蛇动画片段,添加另一个功能,因为它的中心,然后测试中心 - 而不是整个蛇形夹。 (snake.center.hitTestPoint(apple.x,apple.y,true)) { trace('hit'); }

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

+0

是的,这将做。谢谢 – Yamiko

+0

顺便说一句,你可以通过选择填充,然后关闭颜色面板中的阿尔法,使该黑盒不可见。 – jhocking