是否有可能让一个对象在不同屏幕尺寸和密度的多个设备上以相同的相对速度移动?
一开始我只是想要一个速度变量:
public int speed = 40;
这在不同设备上产生了不一致的结果。
public int speed = screenWidth / 40;
这仍然产生不好的结果,所以我试着这样做:
spd = (int) (Math.pow(MainActivity.deviceDensity, 2) + spd);
但结果仍然不一致。那么我如何让一个对象在画布上以一致的速度在不同的设备上移动
其实第二个公式会给你一个完美的结果,只要你计算出屏幕宽度和计算出穿越到另一边所需的时间。
假设你有一个常数时间到达另一边:
constant time = 4 seconds/4000 milliseconds;
这对所有设备都是一样的,speed = distance/time
这将是计算速度的方程,只要你有distance
屏幕宽度和time
你将在所有设备上有相同的速度。
distanceX = 1980;
constant time = 4 seconds/4000 milliseconds;
speed = 0.495;
distanceX = 1280;
constant time = 4 seconds/4000 milliseconds;
speed = 0.32;
,你可以看到速度降低,因为我们使用更少的PPI
,这是完美的