选择以下速度以防止超车

时间:2014-07-01 20:50:12

标签: ios math cocos2d-iphone game-engine

在我的游戏中,角色会从屏幕的下端游到设备屏幕的顶端。

将有四条或更多泳道,里面有多个角色。每个角色都有单独的旅行速度,我不希望角色重叠或超车。

我附上了草图,以显示粗略的游戏布局。 enter image description here

我正在努力计算如何计算新生成的角色(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 = ?????

2 个答案:

答案 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
T1 = D1 / S1
D1 / S1&lt; D2 / S2

您有三个值:D1,D2和S2。解决S1然后(因为速度和距离不能为负,不等式的方向不会改变):

1 / S1&lt; (D2 / S2)/ D1
S1&lt; D1 /(D2 / S2)

对于外观,你甚至可能想说T1&lt; T2 - .5秒,或沿着这些线的东西,以避免“照片完成”。