是否有其他简单的方法可以让isGrounded在Unity 5上工作?

本文关键字:Unity isGrounded 工作 其他 简单 方法 是否 | 更新日期: 2023-09-27 18:10:14

我已经编写了大约一个小时的程序,然后我意识到在unity 5中角色控制器。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;
    }
}

} '

是否有其他简单的方法可以让isGrounded在Unity 5上工作?

所以你试图让你的角色跳,但只有当它在地上?

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

然后你可以在空对象上进行碰撞检测,以检测它是否处于触发状态,并停留在底部。它还补偿了小颠簸之类的东西。

根据你的代码,你没有使用任何字符控制器。你只是通过使用translate来改变物体的位置,它永远不会与地面发生碰撞。在使用角色控制器时,你必须为角色控制器提供带有重力的移动方向,这样它就会使用角色控制器来移动玩家。重力矢量将把你的角色向下拉并与地面碰撞,然后isGrounded将为真。查看unity脚本参考中字符控制器的实现细节