好的,所以我的桨碰撞工作正常:
if(velo.y > 0){
float t = ((position.y - radius) - paddle.position.y)/ velo.y;
float ballHitX = position.x + velo.x * t;
if(t <= 1.0){
if(ballHitX >= paddle.position.x && ballHitX <= paddle.position.x + paddle.width){
velo.y = -velo.y;
}
}
}
但我的墙壁碰撞不是。 (球在桨下时上升,不在桨下时下降)
if(velo.y < 0){
float t = ((position.y - radius) - (wall[2].y + wall[2].height))/ velo.y;
if(t <= 1.0){
velo.y = -velo.y;
}
}
如何阻止此错误并使球从墙上弹起?
最佳答案
我的猜测是你把它翻转了两次。
if(wall) {
velo = -velo;
}
if(paddle) {
velo = -velo;
}
所以,当你做桨时,它是这样的:
am i hitting the wall? nope
am i hitting the paddle? yep! okay flip velocity
但是当你做你的墙时,它是这样的:
am i hitting the wall? yep! okay flip velocity
am i hitting the paddle? yep! okay flip velocity
因此,因为您同时满足这两个条件,所以它会翻转两次。
您需要确定是否已经翻转,以防止双重翻转。
关于java - 碰撞检测无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5481375/