在我的游戏中,角色会从屏幕的下端游到设备屏幕的顶端。
将有四条或更多泳道,里面有多个角色。每个角色都有单独的旅行速度,我不希望角色重叠或超车。
我附上了草图,以显示粗略的游戏布局。
我正在努力计算如何计算新生成的角色(O1)的速度,以便它不会重叠或超过同一泳道中的前一个角色(O2)。
# variables available to calculate the character speed
- O2 = origin of the previous character
- O1 = origin of the new character
- D = distance between character 1 and 2
- S2 = the speed of the previous character
# unknown values
- S1 = the speed new character?
# example
O2 = 10, 100
O1 = 10, 10
D = O2.height - O1.height
S2 = 10 (10 pixels per frame)
S1 = ?????
答案 0 :(得分:0)
正如我在评论中所提到的,由于距离不同,一种考虑它的简单方法就是利用时间。
Swimmer0将花费time0 = distance0/speed0
秒游到最后。
当Swimmer1开始时,Swimmer0将完成其旅程的部分0秒,因此Swimmer0将剩余(distance0/speed0)-partial0
秒。
这是Swimmer1必须采取的最短时间。所以我们希望Swimmer1的速率为:
speed1 < distance1 / ((distance0/speed0)-partial0)
确保Swimmer1在Swimmer0之后完成
答案 1 :(得分:-1)
要找到跟随者可以在不超过领导者的情况下完成的最大速度,您必须知道两者将行进的距离。如果D2是O2在O1开始时离开的距离,那么T2是它将采取的时间,T2 = D2 / S2。
O1与终点线D1有自己的距离。其时间T1必须小于T2:T1 你也可以用不同的方式得出它: T1&lt; D2 / S2 您有三个值:D1,D2和S2。解决S1然后(因为速度和距离不能为负,不等式的方向不会改变): 1 / S1&lt; (D2 / S2)/ D1 对于外观,你甚至可能想说T1&lt; T2 - .5秒,或沿着这些线的东西,以避免“照片完成”。
T1 = D1 / S1
D1 / S1&lt; D2 / S2
S1&lt; D1 /(D2 / S2)