繁体   English   中英

Unity 3D PlayerController 添加 OnCollisionEnter() 方法后不起作用

[英]Unity 3D PlayerController Doesn't Work After Adding OnCollisionEnter() Method

所以我正在制作一个与刚体统一的播放器 controller,我对其进行了测试并且它有效。 然后在我为跳转添加 OnCollisionEnter 方法后的第二天,我对其进行了测试,controller 不再工作,但 OnCollisionEnter 工作。 最奇怪的是我没有收到错误,脚本只是不再工作了。 有什么帮助吗? 这是代码:

using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public Rigidbody rb;
    public float speed = 2000;
    private bool canJump = false;
    // Start is called before the first frame update
     void OnCollisionEnter(Collision collision){
       if(collision.collider.name == "Ground"){
          UnityEngine.Debug.Log("Ground");
          canJump = true;

       }
    void Start()
    {
        
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        if(Input.GetKey("w")){
            rb.AddForce(0, 0, speed * Time.deltaTime);
        }
         if(Input.GetKey("s")){
            rb.AddForce(0, 0, -speed * Time.deltaTime);
        }
           if(Input.GetKey("a")){
            rb.AddForce(-speed * Time.deltaTime, 0, 0 );
        }
          if(Input.GetKey("d")){
            rb.AddForce(speed * Time.deltaTime, 0, 0 );
        }
         if(canJump && Input.GetKeyDown(KeyCode.Space)){
            rb.AddForce(0, 2000 * Time.deltaTime, 0 );
            canJump = false;
        }
        
     }
    }
}
void OnCollisionEnter(Collision collision){
     if(collision.collider.name == "Ground"){
          UnityEngine.Debug.Log("Ground");
          canJump = true;
     }
} // <-- you forgot }

Start()
{
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM