gpt4 book ai didi

java - 小行星类游戏中的正确运动

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:51 26 4
gpt4 key购买 nike

目前我有一些小行星游戏,可以在这里看到:

http://www.youtube.com/watch?v=rQV6H9kWkFE

但是在船还在移动的情况下用户按下W的那一刻,它会把船移动的速度与它的旋转无关并加上它,导致船显得生涩而不协调(很难解释,观看视频)。

这是我使用的代码:

public void update(int delta) throws SlickException
{
float hip = speed * delta;

float rotation = image.getRotation();

for (Bullet b : bulletList)
{
b.update(delta);
}

Input input = gc.getInput();

if (input.isKeyDown(Input.KEY_A))
{
image.rotate(rotateLeftSpeed * delta);

if (rotateLeftSpeed > (ROTATE_LIMIT * -1))
{
rotateLeftSpeed -= rotateSpeed;
}
} else
{
if (rotateLeftSpeed < 0)
{
image.rotate(rotateLeftSpeed * delta);

rotateLeftSpeed += rotateSpeed;

}
}

if (input.isKeyDown(Input.KEY_D))
{
image.rotate(rotateRightSpeed * delta);
if (rotateRightSpeed < (ROTATE_LIMIT))
{
rotateRightSpeed += rotateSpeed;
}
}

else

{
if (rotateRightSpeed > 0)
{
image.rotate(rotateRightSpeed * delta);

rotateRightSpeed -= rotateSpeed;

}
}

if (input.isKeyDown(Input.KEY_W))
{
hip = speed * delta;
protation = image.getRotation();
rotation = image.getRotation();


x += hip * Math.sin(Math.toRadians(rotation));
y -= hip * Math.cos(Math.toRadians(rotation));
if (speed < SPEED_LIMIT)
speed += 0.005f;
} else
{
if (speed > 0)
{

System.out.println(offSpeed);
srotation = image.getRotation();
hip = speed * delta;
x += hip * Math.sin(Math.toRadians(protation));
y -= hip * Math.cos(Math.toRadians(protation));
speed -= 0.003f;

}
}

有没有办法在不引入 dx 和 dy 值的情况下完成此操作?尽可能少的修改?

最佳答案

问题很明显,即使你面向一个方向,也不意味着当你打开推进器时你会移动到那个方向。

您需要第二个内部方向 vector ,当您的推进器打开时,它会得到更新,很可能是通过简单的 vector 加法和随后的归一化。然后,您可以使用那个方向来计算您向船施加力的方向。

关于java - 小行星类游戏中的正确运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com