Unity Player jump:何时使用 RaycastHit 以及何时使用 OnCollisionEnter



我目前正在学习 C# 的 Unity,现在学习了两种通过双重跳跃预防执行玩家跳跃的方法。

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

第二个是使用RaycastHit和Velocity。

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

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

提前感谢!

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

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

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

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

最新更新