我有一个基本的 PlayerEntity,它在更新时使用速度更新它的位置。这是整个更新方法:
public void update() {
if (!AABB.checkCollisionCB(world, position[0] += velocity[0], position[1], position[2])) {
//position[0] += velocity[0];
}
if (!AABB.checkCollisionCB(world, position[0], position[1] += velocity[1], position[2])) {
//position[1] += velocity[1];
}
if (!AABB.checkCollisionCB(world, position[0], position[1], position[2] += velocity[2])) {
//position[2] += velocity[2];
}
for (int i = 0; i < 3; i++)
velocity[i] *= .8;
}
现在如您所见,位置[0] += 速度[0]; 被注释掉了,理论上不应该执行,但它仍然执行!这有什么关系?此外,如果在取消注释时它似乎仍然执行,并且不满足“if”!
代码中唯一提到的 PlayerEntity 如下:
if (player.pushingF == true)
playerEntity.velocity[0] += .05;
if (player.pushingB == true)
playerEntity.velocity[0] -= .05;
if (player.pushingJ == true)
playerEntity.velocity[1] += .05;
if (player.pushingS == true)
playerEntity.velocity[1] -= .05;
if (player.pushingL == true)
playerEntity.velocity[2] += .05;
if (player.pushingR == true)
playerEntity.velocity[2] -= .05;
但这只会改变速度,不应该做任何与位置相关的事情。我正在使用 Eclipse,我尝试了“Project > Clean”,但这似乎什么也没做。奇怪的是,它不会在控制台中进行任何打印,或者可能不会在这些“if”中进行任何其他功能。