gpt4 book ai didi

java - 如何使来自池中的对象具有相同的渐进速度增量?

转载 作者:行者123 更新时间:2023-12-01 09:59:53 25 4
gpt4 key购买 nike

我正在用 LibGDX 制作一个游戏,小行星从屏幕顶部边缘的随机 x 位置产生,小行星以 0.1f 的逐渐速度增量向下移动,当小行星离开屏幕底部边缘时被发送到池中以供重用。我遇到的问题是,一段时间后,来自水池的小行星的速度不同。我希望所有小行星以相同的渐进速度移动。

这是我的 Asteroid 类中的更新和重置方法:

public void update(float delta){
y -= speed * delta;
speed += 0.1f;
}

@Override
public void reset() {
// place asteroid at random x position
x = MathUtils.random(minSpawnPoint, maxSpawnPoint);

// place asteroid above screen edge
y = Constants.CAMERA_HEIGHT + Constants.ASTEROID_MAX_SIZE;

}

最佳答案

如果我明白你在问什么,你希望所有小行星开始缓慢并同时增加速度,以便小行星相对于彼此始终具有相同的速度。

如果是这种情况,那么您只需要一个全局速度变量(在您的小行星类之外),每个小行星将使用该变量来更新其位置。每颗小行星都无法维持自己的本地速度变量,因为特定小行星在屏幕上的时间越长,其速度就越高。这将导致小行星根据它们在屏幕上停留的时间长短而具有不同的速度。

要解决此问题,请将速度变量移至保存小行星池的类。然后通过将速度乘以增量时间来计算 y 的变化 (deltaY),并将该值传递给所有小行星。

现在,每个小行星不再在更新方法中采用增量时间,而是采用 y 位置的变化,您可以使用该值相应地更新小行星的位置。

public void update(float deltaY){
y -= deltaY;
...
}

关于java - 如何使来自池中的对象具有相同的渐进速度增量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36895651/

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