1

我有一个基本的 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”中进行任何其他功能。

4

2 回答 2

4
if (!AABB.checkCollisionCB(world, position[0] += velocity[0], ...

请注意,您position[0] += velocity[0]在 -statement 的条件中if,因此无论条件是否计算为true(并且无论语句的主体是什么),它都会执行。

于 2013-05-29T00:07:25.680 回答
1

您在 if 语句中更改变量:

if (!AABB.checkCollisionCB(world, position[0] += velocity[0], position[1], position[2]))

如果你这样做,它总是会改变......

于 2013-05-29T00:07:59.340 回答