2015-10-19 55 views
1

我正在开发一款小型赛车游戏,并希望增加速度方面的设备。我没有在我的车上安装实际的齿轮系统。为了增加档位,我使用以下逻辑,我可以看到档位从0变为1,但没有进一步变化。如何根据速度更换齿轮?

var gr=0; 
var sp=0; 
sp=sp+(20*Time.deltaTime); 

if(currentSpeed>=sp) 
{ 
    gr++; 
    gear.text="GEAR "+gr;//displaying gear   
} 

以上,currentSpeed逐渐增大与时间。

+0

这意味着经过一次增量后,你的sp和currentpeed结伴而行(相等)或sp总是较低。在指定的时间内打印currentpeed和sp的值并比较 – MohitC

+0

ok。我会尽快更新你 –

+0

它在0-1之间波动,并在结束时保持0 –

回答

2

我不会建议使用该方法来确定它基于速度的装备。看看这个代码:

int currentSpeed; //this will store your speed 

int[] gearSpeeds = new int[]{40,80,120,160,220}; //set any number of gears and on what speeds will they switch to different gear 
int currentGear = 1; //this is default value 

for(int i = 0; i < gearSpeeds.Length; i++) //go through hearSpeeds array 
    if(currentSpeed > gearSpeeds[i]) currentGear++; //if the gear is not enough for specific speed check next it finds the right one 
    else break; 

这是非常简单的方法来解决这个问题,你可以很容易地改变齿轮的数量和他们改变的速度。

+0

的当前速度会如此变化?currentSpeed = Mathf.Lerp(currentSpeed,maxSpeed,Time.deltaTime);'当移动汽车并且maxSpeed为100时 –

+0

看看这是如何相关的,只需在gearSpeeds中设置你想要的值即可。 –

+0

谢谢@NevenIgnjic,因为我使用的是unityscript,所以我不得不在代码中更改几件事情。有效。 –