C# 有没有另一种简单的方法让IsGround在Unity 5上工作?

C# 有没有另一种简单的方法让IsGround在Unity 5上工作?,c#,unity3d,C#,Unity3d,我已经编程了大约一个小时,然后我意识到在unity 5中charactercontroller.isGrounded不起作用。有人能给我一个答案吗? 这是我的密码 public float playerSpeed = 3f; public float realSpeed = 3f; public float jumpSpeed= 7f; public float sprintSpeed= 5f; public float gravity = 20f; // Use this for initia

我已经编程了大约一个小时,然后我意识到在unity 5中charactercontroller.isGrounded不起作用。有人能给我一个答案吗? 这是我的密码

public float playerSpeed = 3f;
public float realSpeed = 3f;
public float jumpSpeed= 7f;
public float sprintSpeed= 5f;
public float gravity = 20f;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    CharacterController CC = GetComponent<CharacterController>();




    if(Input.GetKey(KeyCode.W)){
        transform.Translate(Vector3.forward * playerSpeed* Time.deltaTime);

    }
    if(Input.GetKey(KeyCode.S)){
        transform.Translate(Vector3.back * playerSpeed* Time.deltaTime);
    }
    if(Input.GetKey(KeyCode.D)){
        transform.Translate(Vector3.right * playerSpeed* Time.deltaTime);
    }
    if(Input.GetKey(KeyCode.A)){
        transform.Translate(Vector3.left * playerSpeed* Time.deltaTime);
    }
    if(Input.GetKey(KeyCode.Space) && CC.isGrounded){
        transform.Translate(Vector3.up * jumpSpeed* Time.deltaTime);
    }
    if (Input.GetKey(KeyCode.LeftShift)) {
        playerSpeed = sprintSpeed;
    } else {
        playerSpeed = realSpeed;
    }

}

}`

那么你想让你的角色跳跃,但只有当它在地面上时

我在打井前就遇到了这个问题。我的解决方案是制作一个空的游戏对象,将其作为角色的子对象放置一点,然后在空对象上放置一个碰撞器作为触发器


然后,您可以对空对象进行碰撞检测,以检测它是否处于非碰撞状态,并仅停留在底部。它还可以补偿一些小的颠簸

根据您的代码,您没有使用任何字符控制器。您只需使用translate更改对象的位置,它将永远不会与地面碰撞。在使用角色控制器时,必须向角色控制器提供重力移动方向,以便其使用角色控制器移动玩家。重力矢量会将角色向下拉,并与地面碰撞,然后isGrounded将为真。查看此unity脚本参考中的实现以了解详细信息。

解释不起作用?这是你发现的记录,还是仅仅是你的经历?如果是后者,它可能是特定于您的项目。。。