我已经编程了一个小时左右,然后我认为,在unity5中,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;
}
}
}`
答案 0 :(得分:0)
所以你试图让你的角色跳跃,但只有当它在地面上时?
我在井前有这个问题。我的解决方案是制作一个空的游戏对象并将其作为角色的一个孩子放置一点,然后将对撞机作为触发器放在空对象上。
然后,您可以对空对象进行碰撞检测,以检测它是否仅在底部是触发器。它还补偿了一些小的碰撞和东西。
答案 1 :(得分:0)
根据您的代码,您没有使用任何角色控制器。您只是通过使用不会与您的地面碰撞的translate来更改Object的位置。在使用角色控制器的情况下,您必须向角色控制器提供重力移动方向,以便它将使用角色控制器来移动您的玩家。重力矢量将向下拉你的角色并与地面相撞然后isGrounded将是真的。有关详细信息,请查看此统一脚本参考中的Character Controller实现。