Jump OnCollision()脚本不起作用

时间:2016-07-24 19:41:55

标签: c# debugging vector unity3d unity5

基本上,我正在尝试制作一个基于地面被击中时自动跳跃的游戏我正在使用的控制器是预制的一个可以导入。)为了做到这一点,我从控制器脚本中删除了跳转功能,并添加了一个名为“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

2 个答案:

答案 0 :(得分:1)

首先,撤消您对RigidbodyFirstPersonController脚本执行的所有修改。如果可能,请将其删除并从Unity重新导入一个干净的文件。

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

enter image description here

答案 1 :(得分:0)

由于重力正在影响它,你不在空中。无论何时退出碰撞,你的y轴向上速度都不起作用,重力向下发生。

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