是否有其他简单的方法可以让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;
}
}
} '
所以你试图让你的角色跳,但只有当它在地上?
我在一口井之前就遇到过这个问题。我的解决方案是制作一个空的游戏对象,并将其作为角色的子对象,然后在空对象上放置一个碰撞器作为触发器。
然后你可以在空对象上进行碰撞检测,以检测它是否处于触发状态,并停留在底部。它还补偿了小颠簸之类的东西。
根据你的代码,你没有使用任何字符控制器。你只是通过使用translate来改变物体的位置,它永远不会与地面发生碰撞。在使用角色控制器时,你必须为角色控制器提供带有重力的移动方向,这样它就会使用角色控制器来移动玩家。重力矢量将把你的角色向下拉并与地面碰撞,然后isGrounded将为真。查看unity脚本参考中字符控制器的实现细节