문을 열고닫는 로직을 구현하기 위해 처음에는 OnCollisionEnter2D를 사용하였다.
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
doorControll = true;
}
}
OnCollision2D가 발생하기 위해선 아래 내용이 적용 되어야 한다.
위 내용으로 문을 열고 닫는 로직을 만들었을 때 문을 여는 건 되지만 통과하기 위해 isTrigger를 true로 하게되어 OnCollisionEnter2D가 발생하지 않아 doorControll을 true로 받을 수 없어, 문을 닫을 수는 없게된다.
다음으로 OnTriggerEnter2D를 살펴보았다.
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
doorControll = true;
}
}
OnTriggerEnter2D가 발생하기 위해선 아래 내용이 적용되어야 한다.
최종적으로 위에 OnTriggerEnter2D를 통해 문을 여닫는 로직을 구현하였다.
앞으로 구현할때는 간단하게 아래 2가지를 알면 될 것 같다.
OnColliderEnter2D : 물체가 통과하지 못하는 오브젝트에 닿았을 때 발생할 이벤트
ex) 벽에 닿으면 사라지는 투사체
OnTriggerEnter2D : 특정 영역에 들어갔을 때 발생할 이벤트
ex) Zep의 프라이빗 영역
그외에 OnTriggerExit2D 같은 Enter 대신에 Exit를 쓰면 해당 영역을 떠났을 때 이벤트가 발생한다.