繁体   English   中英

OnTriggerEnter2D 根本不起作用。 Unity 此消息参数必须是 Collider2D 的类型

[英]OnTriggerEnter2D doesn't work at all. Unity This message parameter has to be type of Collider2D

我显然做错了什么。 Unity 给了我:

脚本错误:OnTriggerEnter2D 此消息参数的类型必须为:Collider2D

我在一个空的 object 上有一个 BoxCollider,它是我的玩家的孩子。 当它碰撞时,什么也没有发生。 我已将 IsTrigger 设置为 true。

玩家的子脚本:

public class EnemyHurtCollider : MonoBehaviour
{
    private Rigidbody2D rb;
    private Collider2D coll;
    private void Start()
    {
        GameObject.Find("Player").GetComponent<PlayerController>();
        rb = GameObject.Find("Player").GetComponent<Rigidbody2D>();
        coll = GetComponent<Collider2D>();
    }
    public void OnTriggerEnter2D(Collision2D other)
    {
        if (other.gameObject.tag == "Enemy")
        {
            GameObject.Find("Player").GetComponent<PlayerController>().state = State.hurt; //state hurt
            if (other.gameObject.transform.position.x > transform.position.x)
            {
                Debug.Log("HURT");
                //if enemy is to my right when colliding I should be damaged and move left
                rb.velocity = new Vector2(-GameObject.Find("Player").GetComponent<PlayerController>().hurtForce, rb.velocity.y);
            }
            else
            {
                Debug.Log("HURT");
                //if enemy is to my left when colliding I should be damaged and move right
                rb.velocity = new Vector2(GameObject.Find("Player").GetComponent<PlayerController>().hurtForce, rb.velocity.y);
            }
        }
    }
}

这些是正确的签名:

        private void OnTriggerEnter2D(Collider2D other)
        {
            throw new NotImplementedException();
        }

        private void OnTriggerExit2D(Collider2D other)
        {
            throw new NotImplementedException();
        }

        private void OnTriggerStay2D(Collider2D other)
        {
            throw new NotImplementedException();
        }

        private void OnCollisionEnter2D(Collision2D other)
        {
            throw new NotImplementedException();
        }

        private void OnCollisionExit2D(Collision2D other)
        {
            throw new NotImplementedException();
        }

        private void OnCollisionStay2D(Collision2D other)
        {
            throw new NotImplementedException();
        }

看看你做了什么? 您混淆了 function OnTriggerEnter2D但您正在传递OnCollisionEnter2D的参数。

所以改变: public void OnTriggerEnter2D(Collision2D other)private void OnTriggerEnter2D(Collider2D other)

暂无
暂无

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

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