为了账号安全,请及时绑定邮箱和手机立即绑定

分数系统中的点组合乘数

分数系统中的点组合乘数

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 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号