C# 有没有另一种简单的方法让IsGround在Unity 5上工作?
我已经编程了大约一个小时,然后我意识到在unity 5中charactercontroller.isGrounded不起作用。有人能给我一个答案吗? 这是我的密码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
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脚本参考中的实现以了解详细信息。解释不起作用?这是你发现的记录,还是仅仅是你的经历?如果是后者,它可能是特定于您的项目。。。