Jump OnCollision() 脚本不工作

Jump OnCollision() Script not working

基本上,我正在尝试制作一款基于触地后自动跳跃的游戏我正在使用的控制器是可以导入的预制)。为了做到这一点,我从控制器脚本中删除了跳转功能,并添加了一个名为"Cube"的脚本,内容如下:

    using UnityEngine;
using System.Collections;

public class Cube : MonoBehaviour {

        void OnCollisionStay (Collision col)
        {
        if (col.gameObject.name == "Blue") {
            Rigidbody rig;
             rig= GetComponent<Rigidbody> ();
            rig.velocity = new Vector3 (0, 8, 0);

            print ("collison detected");
        }
            }
        }

在这样做之后,由于 "OnCollisionStay()" 触发器,我期待一个可控的角色,它会在您触地时立即跳跃。 然而,即使我在空中,我也会快速跳跃,看起来像这样:

https://youtu.be/ILtRac_RgLg

你不在空中,因为重力正在影响它。每当您退出碰撞时,您的 y 轴向上速度不起作用并且重力向下发生。

如果您不想使用重力,请在 FPSController 的 Rigidbody 组件中禁用 gravity

首先,撤消 您对 RigidbodyFirstPersonController 脚本所做的所有修改。如果可能,删除它并从 Unity 重新导入一个干净的。

Select 你的 RigidBodyFPSController GameObject,在编辑器中查看附加到它的 RigidbodyFirstPersonController 脚本。在它下面有一个名为 Advanced Settings 的设置。在高级设置下,有一个名为Shell偏移的变量。将 Shell 偏移量 从其默认值 0 更改为 0.5。再玩一次,这个问题应该就没有了。如果那不起作用,请将其增加。这应该可以解决您的问题。