亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

分數系統中的點組合乘數

分數系統中的點組合乘數

C#
青春有我 2022-07-23 17:35:54
我對編程很陌生,目前正在使用 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到當前值。


查看完整回答
反對 回復 2022-07-23
  • 1 回答
  • 0 關注
  • 97 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號