我對編程很陌生,目前正在使用 c# 在 Unity 上開發一個無盡的運行游戲。我堅持讓我的評分系統正常工作。玩家根據行駛距離收集分數。所以在管理分數的腳本中,Update()我有:distance += Vector2.Distance(Player.transform.position, lastPosition);lastPosition = Player.transform.position;baseScore = distance; 這很好用。在這個游戲中,你會因為在一定距離內沒有撞到障礙物而獲得獎勵,所以在玩家控制器腳本中我寫了:public void Update(){ distanceTraveled += Vector2.Distance(transform.position, lastPosition); lastPosition = transform.position; if (distanceTraveled >= 10) { NoHitCombo = NoHitCombo + 2; distanceTraveled = 0; } [...] }和public void OnTriggerEnter2D(Collider2D other)if (other.gameObject.tag == "Obstacle"){ NoHitCombo = 0; distanceTraveled = 0;}因此,如果我沒有擊中任何東西,我的得分增益,而 NoHitCombo > 0 應該是 *2、*4、*6 等。例如:在開始時,我正在獲得距離作為得分。雖然 NoHitCombo 為 2,但我想計算一個新值,即"Distance since NoHitCombo value has changed * NoHitCombo". 如果它的 4 我想要另一個值來計算距離 * 4 等等。我試著像這樣寫smt Update():Finalscore = baseScore * NoHitCombo; 但這不起作用,因為我的分數隨著 NoHitCombo 值的變化而變化。我嘗試了一些東西,if (nohitcombo > 0)但沒有按預期工作。我想我錯過了一些東西來完成這個謎題,我嘗試的一切都是錯誤的。我想不出解決這個問題。我可能確實需要在乘數處于活動狀態時存儲行駛距離的值,并且一旦它發生變化,它應該將該值添加到分數中任何幫助將不勝感激 ps 英語不是我的母語,對此感到抱歉!
1 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
如何重新使用您已經獲得的“自上一幀以來的距離”值
private void Update()
{
var distanceSinceLastFrame = Vector2.Distance(transform.position, lastPosition);
lastPosition = transform.position;
// ...
distanceTraveled += distanceSinceLastFrame;
if (distanceTraveled >= 10)
{
NoHitCombo = NoHitCombo + 2;
distanceTraveled = 0;
}
// ...
// if NoHitCombo is 0 use 1 instead
FinalScore += distanceSinceLastFrame * NoHitCombo == 0 ? 1 : NoHitCombo;
}
因此,不要總是將 設置FinalScore為固定計算值,而是將其添加distanceSinceLastFrame * NoHitCombo到當前值。
- 1 回答
- 0 關注
- 97 瀏覽
添加回答
舉報
0/150
提交
取消