【问题标题】:Unity Player jump: when to use RaycastHit and when OnCollisionEnterUnity Player 跳转:何时使用 RaycastHit 以及何时使用 OnCollisionEnter
【发布时间】:2020-06-21 21:28:13
【问题描述】:

我目前正在使用 C# 学习 Unity,现在学习了两种方法来执行防止双跳的玩家跳跃。

第一个是通过 OnCollisionEnter 防止双跳的GetComponent<Rigidbody>().AddForce 方法,例如在 transform.tag == "地板"上。

第二个是 RaycastHit 和 Velocity。

对我来说,第二种方法效果不佳。我仍然能够进行二段跳。

我现在想知道是否有人可以向我解释为什么或何时使用一种方法优于另一种或哪种方法可能更好。

提前致谢!

【问题讨论】:

    标签: c# unity3d game-development


    【解决方案1】:

    这两种方法都不一定优越。这一切都取决于您的游戏需求。

    在玩家模型的“脚”处使用放置良好的对撞机来检查接地性可以很好地工作,但重点是“放置良好”。位置不佳或尺寸/形状不佳的对撞机将导致误报/误报。例如,玩家可能会击中天空中的“地面”平台的底部并将接地设置为真。或者,如果玩家站在平台的最边缘,他们的地面检查对撞机可能不会与他们站立的表面发生碰撞,从而导致接地错误。以及许多其他极端情况。

    使用光线投射可以更精确地控制应检查接地的时间和地点,但是从处理的角度来看,它的成本更高。光线投射还允许检查即将发生的地面碰撞。

    一个复杂的系统可能会同时使用光线投射和碰撞检测来涵盖所有必要的接地情况。

    【讨论】:

    • 感谢您的解释。我的代码中似乎也有一些小错误,这些错误导致无法防止使用光线投射进行双跳。最后它运作良好。编辑:我给了你一个赞成票,但由于我的水平低,它没有公开显示。
    猜你喜欢
    • 2012-03-13
    • 2015-01-07
    • 2016-09-23
    • 2021-02-09
    • 2019-08-12
    • 1970-01-01
    • 2020-01-11
    • 2011-01-18
    相关资源
    最近更新 更多