유니티는 게임 개발자들에게 인기 있는 게임 엔진 중 하나입니다.
충돌 처리는 게임에서 중요한 역할을 합니다.
충돌 처리를 잘못하면 게임의 퀄리티가 떨어지고,
플레이어들은 게임에서 불편함을 느낄 수 있습니다.
따라서 충돌 처리는 게임 개발에서 핵심적인 부분 중 하나입니다.
유니티에서 충돌 처리를 위해서는 충돌 지점을 찾는 것이 중요합니다.
충돌 지점을 찾는 것은 충돌 처리를 위한 필수적인 단계 중 하나입니다.
충돌 지점을 찾는 방법은 여러 가지가 있습니다.
이 글에서는 유니티에서 충돌 지점을 찾는 방법을 살펴보겠습니다.
유니티에서 충돌 지점을 찾는 방법은 2D와 3D에서 조금씩 다릅니다.
2D에서는 Collision2D 컴포넌트를 사용하고,
3D에서는 Collision 컴포넌트를 사용합니다.
또한 충돌 지점을 찾는 방법은 OnCollisionEnter2D와 OnCollisionEnter 메소드를 사용하는 것입니다.
이러한 메소드를 사용하면 충돌 지점을 찾을 수 있습니다.
충돌 지점 찾기 예제
void OnCollisionEnter2D(Collision2D col)
{
ContactPoint2D contact = col.contacts[0];
Vector2 pos = contact.point;
Vector2 normal = contact.normal;
Debug.Log("충돌 지점: " + pos);
Debug.Log("법선 벡터: " + normal);
}
- 유니티에서 충돌 지점을 찾는 가장 기본적인 방법은 OnCollisionEnter(Collision col) 함수를 사용하는 것이다.
- 이 함수는 두 개의 충돌체가 충돌했을 때 호출되며, 충돌체의 정보를 담고 있는 Collision 객체를 매개변수로 받는다.
- Collision 객체는 충돌체의 정보뿐만 아니라, 충돌 지점과 충돌한 법선 벡터 등의 정보도 제공한다.
- 충돌 지점을 더욱 정확하게 찾기 위해서는 OnCollisionEnter 함수 대신 OnCollisionEnter2D(Collision2D col) 함수를 사용하는 것이 좋다.
- 이 함수는 2D 충돌체의 정보를 담고 있는 Collision2D 객체를 매개변수로 받으며, Collider2D 객체의 contacts 속성을 통해 충돌 지점을 찾을 수 있다.
활용
- 이펙트 생성 위치
- 방향 구하기 ( 충돌 지점과 특정 객체 )
- 법선을 이용해 바운스에 활용
저와 같은 경우는 두번째 방식을 쓰려고 사용했습니다.
방향을 구해서 그 방향으로 충돌체를 날리려고 했거든요
이 외에도 여러가지 활용처가 있겠지만 아직 이 두 가지 말곤 크게 생각나질 않네요
최적화
- 충돌 범위 제한: 충돌 검사를 수행하는 물체의 범위를 제한하여 성능을 향상시킬 수 있습니다. 이를 위해 충돌 검사를 수행하는 물체의 크기를 최소화하거나 충돌 검사를 수행하는 물체의 수를 줄일 수 있습니다.
- 충돌 계층: 충돌 검사를 수행하는 물체를 계층 구조로 구성하여 성능을 향상시킬 수 있습니다. 이를 위해 충돌 검사를 수행하는 물체를 계층 구조로 구성하고, 충돌 검사를 수행하는 물체 간의 계층 구조를 이용하여 충돌 검사를 수행할 수 있습니다.
- 충돌 검사 빈도: 충돌 검사를 수행하는 빈도를 제한하여 성능을 향상시킬 수 있습니다. 이를 위해 충돌 검사를 수행하는 물체의 빈도를 제한하거나 충돌 검사를 수행하는 물체의 수를 줄일 수 있습니다.
'유니티 > 팁' 카테고리의 다른 글
유니티 프로젝트 템플릿 만들기 (0) | 2021.11.29 |
---|
댓글