这是我第一个更大的编程项目,所以我几乎是一个初学者,他遇到了一个问题,这个问题让我现在几周感到困惑。也许有人可以帮忙。 :)当与一个矩形的边缘碰撞时,球会跳跃
我正在构建一个简单的2D游戏。您可以通过俯仰和偏航智能手机来控制球。每当球碰到矩形障碍物的确切边缘时,它首先陷入它,然后随机跳出。当障碍物建立一条直线时,它不会发生。
经过一段时间的调试,我很确定这个错误必须存在于游戏物理部分的某个地方。这里是代码:
float var = gameView.screenSize()/2;
// If the player touches the barrier, its speed will invert
for(RectF r : barrier) {
if(playerSpeedX > 0 && playerX > r.left - var && playerX < r.right + var && playerY >= r.top && playerY <= r.bottom) { playerX = r.left - var; playerSpeedX = -playerSpeedX;} // left
if(playerSpeedX < 0 && playerX > r.left - var && playerX < r.right + var && playerY >= r.top && playerY <= r.bottom) { playerX = r.right + var; playerSpeedX = -playerSpeedX;} // right
if(playerSpeedY > 0 && playerY > r.top - var && playerY < r.bottom + var && playerX >= r.left && playerX <= r.right) { playerY = r.top - var; playerSpeedY = -playerSpeedY;} // top
if(playerSpeedY < 0 && playerY > r.top - var && playerY < r.bottom + var && playerX >= r.left && playerX <= r.right) { playerY = r.bottom + var; playerSpeedY = -playerSpeed;} //bottom
}
var描述了障碍物的一半大小。
也许有人可以帮助我。提前致谢。 :)
如果障碍物是*矩形* *单个*值“*障碍物大小的一半*”是什么意思?一个维度只适用于* square *(一个相当特殊的矩形)。 – Clifford
你确定你不是指“*球大小的一半*”,这似乎更可能给出代码。 – Clifford
应该没关系,游戏区被划分为16:9的网格,所以球和障碍物的网格大小相同。是的,障碍都是正方形,对不起。 –