我写了一个小程序,当实现时停止一个小正方形穿过一个更大的矩形。
调用该collision()
函数时,它会检查形状是否发生碰撞。目前它执行以下操作:
- 当正方形
up
向形状移动时,它不会通过。(应该是这样) - 当正方形
down
向形状移动时,它不会通过。(应该是这样) - 向形状移动
right
时,它不会通过。(但它向上移动一键) - 向形状移动
left
时,它不会通过。(但它一键向左移动,一键向上移动)(见图)
这是我的collision()
功能:
if (sprite_Bottom +y_Vel <= plat_Top ){return false;}
else if(sprite_Top +y_Vel >= plat_Bottom ){return false;}
else if(sprite_Right +x_Vel <= plat_Left ){return false;}
else if(sprite_Left +x_Vel >= plat_Right ){return false;}
//If any sides from A aren't touching B
return true;
这是我的move()
功能:
if(check_collision(sprite,platform1) || check_collision(sprite,platform2)){ //if colliding...
if (downKeyPressed ){ y_Vel += speed; downKeyPressed = false;} //going down
else if(upKeyPressed ){ y_Vel -= speed; upKeyPressed = false;} //going up
else if(rightKeyPressed){ x_Vel -= speed; rightKeyPressed = false;} //going right
else if(leftKeyPressed ){ x_Vel += speed; leftKeyPressed = false;} //going left
}
glTranslatef(sprite.x+x_Vel, sprite.y+y_Vel, 0.0); //moves by translating sqaure
我希望left
andright
碰撞与 and 一样up
工作down
。我的代码对每个方向都使用相同的逻辑,所以我不明白它为什么这样做......