3

我想在 Flash AS3 中创建一个迷宫,由用户引导角色。我尝试使用它(如下),但这需要我将所有迷宫墙单独制作并为每个墙设置碰撞检测。有没有更简单的方法来完成同样的事情?

monkey.addEventListener( Event.ENTER_FRAME, handleCollision)

function handleCollision( e:Event ):void
{
    if(monkey.hitTestObject(wall))
       {
           trace("HIT");
       }
       else
       {
           trace("MISS");
       }
}
4

3 回答 3

1

为什么它意味着单独的墙壁?您是否尝试过绘制迷宫形状/墙壁并一次选择它们,右键单击以将选择转换为给出首选名称的影片剪辑。然后也给它实例名称“墙”。现在尝试运行它,您的handleCollision功能应该可以工作。

或者尝试在您的碰撞检查中从 更改hitTestObjecthitTestPoint...

function handleCollision(e:Event):void
{ 
 if (wall.hitTestPoint (monkey.x, monkey.y, false)) 
    { trace("HIT"); } 
else 
    { trace("MISS"); } 
}

另请查看本文以获得更多说明。
http://www.actionscriptmoron.com/AS3Tutorials/hittest-hittestpoint/

于 2013-04-18T18:03:38.100 回答
1

您可以使用碰撞检测工具包:https ://code.google.com/p/collisiondetectionkit/

于 2013-04-18T17:44:49.310 回答
1

你可以做到这一点的一种方法是使用hitTestPoint()方法来测试是否有任何角落撞到你的墙上。

hitTestPoint()仅测试单个位置以查看该点是否与对象碰撞。这就是你如何测试你的猴子的左上角,看看它是否接触到墙壁:

// I am assuming that x,y is the top left corner of your monkey

if (wall.hitTestPoint(monkey.x, monkey.y, true))
{
   // top left collided with wall
{

所以你可以对所有角落做同样的事情,或者如果你愿意,你可以确定你想要检查猴子的任何碰撞点。

根据您的精度水平,此方法可能适合您的需求。但是如果你想要像素完美碰撞,你可以查看这个链接:

http://www.freeactionscript.com/2011/08/as3-pixel-perfect-collision-detection/

于 2013-04-18T17:51:32.840 回答