2015-10-19 43 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,所以我不得不在代碼中更改幾件事情。有效。 –