使用ActionScript 3.0进行碰撞检测

时间:2014-02-23 20:14:31

标签: actionscript-3 actionscript flash flash-cs4

嘿,我是Flash Action Script 3的初学者。

我正在使用hitTestPoint()来检测汽车和舞台绘图之间的碰撞。汽车正在进入舞台,所以我使用的是hitTestPoint()。

有一个问题,让我们说。

汽车是一个正方形,现在它实际上是一个完美的广场。

我这样做:

heightHalf = car.height / 2;
widthHalf = car.width / 2;

if(level.hitTestPoint(car.x + widthHalf, car.y + heightHalf,true)){
    trace( "Right Collision" );
}

它应该起作用,car.x +它的一半应该返回x轴上的点,该点与y轴相撞并且相同。但它不起作用。

当我的汽车与右侧墙壁碰撞时,它不会产生错误或痕迹,但如果我将汽车进一步移出舞台(因为汽车可以通过墙壁),就在它完全移出之前,它会产生跟踪错误就在左侧与墙壁碰撞时。

这些照片应该有所帮助:

右碰撞没有错误:http://i.minus.com/ibqvrbNHuLTTIX.png

错误但有错误的一面:http://i.minus.com/iGRNRVmCwwY4x.png

反转+ - 符号也无济于事。

1 个答案:

答案 0 :(得分:0)

注意锚点在汽车对象上的位置。因为您使用的是Flash IDE,所以锚点可能位于中间,右侧或左侧。

此外,您还需要多次点击这种类型的hitTesting。汽车的每一侧至少有一个。

如果您的注册点位于左上方,那么您将被击中测试汽车的中间点。因此,当汽车的一半越过墙壁时,它只能记录碰撞。

检查您的注册点。创建新的movieClip或Sprite时,可以通过单击对象名称下方的方框中的9框之一来选择注册点。