Gdx 的 justTouched() 有没有 method/function 来控制移动速度?

Is there any method/function to control moving speed in justTouched() in Gdx?

我需要在设置条件下帮助控制触摸屏幕时导弹的速度(导弹射手 Jet)。 我尝试使用计时器时间表但没有为我工作。

============================================= ============================================

enter image description here

欢迎光临。 :) 提问时,您应该将代码直接包含在 post 的正文中,而不是链接到图片。

通过调用 batch.draw() 并在 while 循环中更新导弹的速度,导弹将在实际绘制之前移出屏幕。 while 循环必须先完成,然后才能向下移动到其余的绘图代码。

您将需要删除 while 循环,这意味着您将无法使用 justTouched(),因为它只会在一个渲染周期内处于活动状态。相反,您需要创建另一个在按下按钮时设置的变量(如 "missileFired" 或其他变量),然后在更新导弹的位置并绘制它之前检查它。导弹离开屏幕后,将 missileFired 重置为 false。

您所谓的 "velocity",并不是真正的速度。它是从火箭的原始位置偏移的位置。您可以直接更新导弹的 y 位置。

 missileY += 1;

最后一点是,当以不同的帧速率玩游戏时,您的导弹将以不同的速度移动。以 60fps 播放时,导弹的移动速度是 30fps 时的两倍。要解决这个问题,您需要使用增量时间(帧之间的时间)并将其乘以用于更新导弹位置的增量值。所以看起来像这样。

missileY += 20 * Gdx.graphics.getDeltaTime();

在本例中,导弹每秒移动 20 个像素。但是,如果您改为使用 missileY += 1,那么导弹将每帧更新 1 个像素(在 30fps 时每秒更新 30 个像素或在 60fps 时每秒更新 60 个像素)。通过使用增量时间,移动现在基于秒而不是帧,这意味着无论设备的帧速率如何,您的导弹都将以完全相同的速度移动。希望这一切都有意义。如果没有,请查看有关 "delta time"、"game loops" 和 "frame rate independent game play" 的编程教程,了解有关此主题的更多详细信息。