OnTriggerEnter2D вообще не работает. Unity Этот параметр сообщения должен быть типа Collider2D - PullRequest
0 голосов
/ 11 апреля 2020

Я, очевидно, что-то делаю не так. Unity дает мне:

Ошибка сценария: OnTriggerEnter2D Этот параметр сообщения должен иметь тип: Collider2D

У меня есть BoxCollider на пустом объекте, который является дочерним мой игрок Когда он сталкивается, ничего не происходит. Я установил для IsTrigger значение true.

***player's child script***
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);
            }
        }
    }
}

1 Ответ

2 голосов
/ 11 апреля 2020

Это правильные подписи:

        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();
        }

Видите, что вы сделали? вы перепутали функцию OnTriggerEnter2D, но вы передаете параметр для OnCollisionEnter2D.

Так что измените: public void OnTriggerEnter2D(Collision2D other) на private void OnTriggerEnter2D(Collider2D other)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...