首页 > 解决方案 > libGDX 中对象的速度

问题描述

在 libGDX 中以给定速度移动游戏中对象的正确方法是什么?例如。我在屏幕底部有一个圆圈,我想以每秒 10 像素的速度将它移动到顶部。所有手机都有不同的速度,所以每部手机上渲染功能的增量时间都不同,我该怎么做呢?

标签: javaandroidandroid-studiolibgdx

解决方案


我不确定你到底是什么意思:

所有手机都有不同的速度,所以每部手机上渲染功能的增量时间是不同的......

但我认为您对渲染过程中增量值的理解是不正确的。您可能已经知道,渲染方法每秒被调用多次,每次完成对渲染方法的调用后,屏幕都会更新。可以查看render方法调用了多少次Gdx.graphics.getFramesPerSecond()。那么增量值的目的究竟是什么?delta只是当前帧(此渲染调用)和最后一帧(当前帧之前的渲染调用)之间的时间跨度,以秒为单位。

从物理学中我们知道distance = velocity * time

因此,要以每 1 秒 10 个单位的距离移动对象(单位可以是像素、米等……这实际上取决于您的相机和世界渲染逻辑),我们必须计算当前帧的正确行进距离. 我们知道速度和经过的时间(delta)。我们可以像这样计算下一个位置

public void render(float delta) {
    float velocity = 10.0f; // actually 10.0units / 1s
    position = position + velocity * delta; // position can be circle.y to travel up
}

推荐阅读