2011-04-21 67 views
0

我正在制作一款迷宫游戏,并将迷宫的边缘视为动画片段。我试图测试玩家是否测试了迷宫让他停止使用此代码。命中测试迷宫

If(player.hitTestObject(Maze)) 
{ 
    function() 
} 

但是是否它实际上触摸迷宫(它在里面的空白空间)它总是注册为触摸。有没有什么办法解决这一问题?

+2

您可能想要使用BitmapData.hitTest。这是一个很好的例子:[link](http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/)。 – Corey 2011-04-21 22:24:23

回答

1

您不必使用任何物理API。它们太重,太复杂,而且你的任务很简单。尝试替换hitTestPoint的hitTest方法

if(Maze.hitTestPoint(player.x,player.y)) 
{ 
    function() 
} 

干杯!

1

这是你在找什么:

http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/

之所以则hitTest总是说真的,就是它只检查,看是否边框两个物体相互接触。关于这个意思的更多nfo可能可以在上面的链接中找到。以上链接中的内容是对如何在Flash中进行像素完美命中测试的解释。 :)此外,如果你正在使用这样的和/或任何一种物理碰撞做一个游戏,你可能会在本教程的兴趣:

http://gotoandlearn.com/play.php?id=135

这是一个关于世界建筑套件Box2D的视频,可能是最流行的闪存物理库。

+0

那就是我想的。我查了一下,它说Flash在对象周围绘制了一个命中的测试矩形,除了矩形以外,它都是不好的。感谢您的链接! – master565 2011-04-22 05:13:39

+0

没问题,是的,这是真的。即使你有钻石形状,闪光灯也会以90度的角度画出一个矩形来包围它。您可以通过在Flash播放器中右键单击并启用“显示重绘区域”来以可视方式查看。 – 2011-04-22 07:28:38