嘿,我是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
反转+ - 符号也无济于事。
答案 0 :(得分:0)
注意锚点在汽车对象上的位置。因为您使用的是Flash IDE,所以锚点可能位于中间,右侧或左侧。
此外,您还需要多次点击这种类型的hitTesting。汽车的每一侧至少有一个。
如果您的注册点位于左上方,那么您将被击中测试汽车的中间点。因此,当汽车的一半越过墙壁时,它只能记录碰撞。
检查您的注册点。创建新的movieClip或Sprite时,可以通过单击对象名称下方的方框中的9框之一来选择注册点。