본문 바로가기

유니티

[유니티] 콜리전, 콜라이더, 트리거, 리지드바디

콜리전(Collision) 

충돌검출처리를 하는데 수학적인 계산 ex) 플레이어가 벽을 뚫지못하고 길로 갈 수 있게

Collision에서는 Collider 또한 가져올 수 있음

 

콜라이더(Collider) 

컴포넌트는 물리 충돌 처리를 위한 오브젝트의 형태

오브젝트 간의 충돌을 인식하고 처리하는 영역을 정의

 

트리거(Trigger)

충돌검출처리를 하는데 수학 계산 안함

오브젝트가 콜라이더 영역에 들어왔을 때 특정 이벤트를 발생

ex)

1. 자동문같이 판정은 하는데 지나갈 수 있게

2. 때리는건 트리거로 처리.. - 때리는 사람의 움직임때문에 맞는 사람의 움직임이 이상하게 될 수 있음

게임오브젝트 콜라이더 트리거

리지드바디(Rigidbody)

Rigidbody는 GameObject 가 물리 제어로 동작하게 함

물리 엔진을 통해 다른 오브젝트와 상호작용

콜라이더가 붙어있다고해서 되는게 아니라 콜리전이나 트리거는 무조건 리지바디가 필요함

리지드바디 속성들 중력해제

 

 OX 퀴즈

Q1 - 만약 소스코드는 볼에 들어있고 리지디바디는 블럭에 있다면  콜라이더는 반응을 할까?

Q2 - 부모가 리지드바디만 가지고 있고 자식한테 스크립트가 있다면 콜라이더가 반응을 할까?

Q3 - 트리거와 콜리전이 들어온다면 트리거만 들어올까?

정답

 

수업에서 했던 내용 정리

using UnityEngine;

public class CollisionExample : MonoBehaviour
{
//콜백은 아니고 오버로딩된 함수를 사용
    private void OncollisonEnter(Collision _collison)//붙어있을 때
    {//콜리전 클래스에 출될된 오브젝트의 이름이 들어옴
        Debug.Log("OncollisonEnter: " + _collison.gameObject.name);
    }

    private void OnCollisionStay(Collision _collision)//붙어있을 때
    {
        Debug.Log("OnCollisionStay : " + _collision.gameObject.name);
    }

    private void OnCollisonExit(Collision _collision)//떨어졌을 때
    {
        Debug.Log("OnCollisonExit : " + _collision.gameObject.name);
    }

    private void OnTriggerEnter(Collider _collison)
    {
        Debug.Log("OnTriggerEnter : " + _collison.name);
    }
    private void OnTriggerStay(Collider _collider)
    {
        Debug.Log("OnTiggerSTay : " + _collider.name);
    }

    private void OnTriggerExit(Collider _collider)
    {
        Debug.Log("OntriggerExit : " + _collider.name);
    }

}