我在处理碰撞检测的代码时遇到了麻烦。我已经测试过以确保它确实检测到碰撞,但确实如此,但是我无法让它工作,因为它只是穿过块。我也尝试在碰撞后从x值中取出-10,但它会在前几次尝试时停留,然后只是走过这个区块。
private function collisionDetect(evt:Event):void{
if(IMG3.hitTestObject(block)){
if(IMG3.x > block.x){
IMG3.x = block.x-1;
}
}
}
答案 0 :(得分:0)
这取决于物体移动的速度。提供有关您要完成的内容的更多详细信息。如果两个对象都是碰撞并且img的中心点x大于块的中心x,那么你的代码应该可以正常工作。
负责移动对象的代码在哪里?
无论如何,另一种方法是while
循环:
private function collisionDetect(evt:Event):void{
if(IMG3.hitTestObject(block)){
while (IMG3.x > block.x)
{
IMG3.x--;
}
}
}
但同样,这取决于IMG如何开始移动以及它在代码中的位置。另请注意felipemaia对物体中心点的评论。正确的方法是(IMG3.x + IMG3.width / 2) > ( block.x - block.width / 2)
假设物体的两个中心点确实是它们的精确中心。
p.s重新标记标题 - 这不是Flash Builder问题