Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在设定的时间内将游戏对象从屏幕的一侧移动到另一侧?_Android_Coordinates - Fatal编程技术网

Android 如何在设定的时间内将游戏对象从屏幕的一侧移动到另一侧?

Android 如何在设定的时间内将游戏对象从屏幕的一侧移动到另一侧?,android,coordinates,Android,Coordinates,假设我想制作一个屏幕上有一个简单对象的android游戏。该对象以x=0开始,并在屏幕的x=右侧结束 让我们也假设我们生活在一个完美的世界里,每台设备都以每秒30帧的速度运行。我当然可以使用下面的代码片段从“0”点到“屏幕右侧”,但由于碎片的存在,在每个设备上花费的时间肯定是可变的 while(x < rightSideOfScreen) x++; while(x

假设我想制作一个屏幕上有一个简单对象的android游戏。该对象以x=0开始,并在屏幕的x=右侧结束

让我们也假设我们生活在一个完美的世界里,每台设备都以每秒30帧的速度运行。我当然可以使用下面的代码片段从“0”点到“屏幕右侧”,但由于碎片的存在,在每个设备上花费的时间肯定是可变的

while(x < rightSideOfScreen)
 x++;
while(x<屏幕右侧)
x++;
我知道的唯一坐标系是android.graphics.Point,这是我目前在游戏中使用的坐标系

  • 有没有更好的方法来管理2D游戏坐标
  • 如何使简单的游戏对象在所有设备上以相同的时间从点“0”到达点“屏幕右侧”
  • 这取决于你的要求。如果你的游戏是由一个物体在恒定时间内从左向右移动组成的,那么这可能就是你所需要的。如果你正在做一个3D FPS拍摄,你可能想看看,等等。在中间有引擎和库可以帮助你,比如

  • 以下是一些代码(未测试):

  • [……]


    使用插值,我想:

    targetX = rightSideOfScreen;
    
    
    x += (targetX - x) * 0.08f * delta * FPS;
    
    使用0.08f值进行播放


    你所说的“完美世界”用在我上面的例子中。通过将移动与render()方法中传递的增量相乘,可以确保它在所有设备上运行相同。

    您需要记住起始点的时间戳,然后在每个
    onDraw
    中根据当前时间和视图宽度计算x坐标。例如,在我的设备上,onDraw每12-20毫秒调用一次,与60帧每秒(而不是30帧每秒)的速度更相关
    targetX = rightSideOfScreen;
    
    
    x += (targetX - x) * 0.08f * delta * FPS;