我希望能在设定的条件下,控制导弹在触屏时的速度(导弹射手 Jet).我试过用定时器计划,但对我来说没有效果。
欢迎你的加入。:) 当你提出问题时,你应该将你的代码直接包含在你的帖子的正文中,而不是链接到一个图片。
通过调用 batch.draw() 并在 while 循环中更新导弹的速度,导弹将在实际被绘制之前被移出屏幕。while循环必须在它向下移动到绘图代码的其余部分之前完成。
你需要删除 while 循环,这意味着你将无法使用 justTouched(),因为它只在一个渲染周期内有效。取而代之的是,你需要创建另一个变量(比如 "missileFired "之类的),当按钮被按下时,这个变量就会被设置,然后你在更新导弹的位置并绘制它之前,检查这个变量。一旦导弹离开屏幕,然后将missileFired重置为false。
你所说的 "速度",并不是真正的速度。它是火箭的原始位置的一个位置偏移。你可以直接更新导弹的y位置。
missileY += 1;
最后一点是,你的导弹在以不同的帧率玩游戏时,会以不同的速度移动。当以60fps播放时,导弹的移动速度将是30fps的两倍。为了解决这个问题,你需要使用delta时间(帧与帧之间的时间),并将其乘以你用来更新导弹位置的增量值。所以,这看起来像这样。
missileY += 20 * Gdx.graphics.getDeltaTime();
在这个例子中,导弹将每秒钟移动20个像素。然而,如果您使用 missileY += 1
取而代之,那么导弹将每一帧更新一个像素(30fps时每秒30个像素或60fps时每秒60个像素)。通过使用delta时间,现在移动是基于秒而不是帧,这意味着你的导弹将以完全相同的速度移动,无论设备的帧率。希望这一切都有意义。如果不明白,请查找关于 "delta时间"、"游戏循环 "和 "帧率独立游戏 "的编程教程,以了解更多关于这个主题的细节。