Unity - Collision (충돌 처리)

Nuwooo·2022년 9월 29일

인프런 Rookiss님의 <C#과 유니티로 만드는 MMORPG게임 개발 시리즈 Part3:유니티엔진> 내용을 보고 공부목적으로 작성한 글 입니다.

Collision

Collider


  • 유니티에서 충돌처리 = 객체와 객체가 포개졌다 또는 닿았다는 뉘앙스

땅을 깔고 Material 적용

  • Collision을 알아보기 전에 먼저 땅을 깔자

  • 땅을 가는 방법에는 두가지

    • Plane
    • Terain
  • 우선 Plane으로 깔고 색 변경

  • 색 변경은 Material을 추가하는 것으로 가능
    () - Material = 재질. 빛이 반사 될 때 어떤식으로 반사 될 것인지 정의해주는 파일
    Create - Material - Albedo ~ 원하는 색으로 변경

  • Character를 y축으로 올려둔 상태
  • 실행 결과 : Play를 시켜도 밑으로 떨어지지 않는다!
  • 유니티에서 물리 Physics를 적용하기 위해서는 특정 Component를 붙여줘야 함
    -> 그게 바로 Rigidbody

Rigidbody

Control of an object's position through physics simulation.

Adding a Rigidbody component to an object will put its motion under the control of Unity's physics engine. Even without adding any code, a Rigidbody object will be pulled downward by gravity and will react to collisions with incoming objects if the right Collider component is also present.

  • 어떤 물체에 포지션을 물리적으로 컨트롤 한다.
  • Rigidbody 컴포넌트를 추가해주면 물리엔진에 적용을 받게 되고, 코드 없이도 중력에 적용을 받는다.
  • 어떤 다른 객체 또는 물체가 Collider 컴포넌트를 갖고 있다면 [충돌]에 영향을 받는다.
  • 충돌처리를 위해, 우리의 Player Character에 Capsule Collider를 추가해주자
  • Player 객체에다가 캡슐모양 Collider를 모양에 맞게 적용해주면 됨

그렇다면 왜 Collider를 이용해서 충돌처리를 하는 걸까?

  • 우리의 3D Player 객체는 무수히 많은 삼각형의 집합으로 그 모양을 형성하고 있는데, 이걸 충돌처리한다고 연산하기 위해서는 각각의 삼각형에 적용하니까 어마어마한 연산 작업이 필요하다.
  • 게임 안에는 Player 객체 말고도 많은 객체가 있는데 그 객체마다 미세한 충돌 연산을 해줄 리소스가 없음
  • 그래서 객체 자체 Mesh 기준으로 충돌처리를 하는 게 아니라 Collider라는 껍데기를 씌워서 사용!
  • FPS 게임이라면 충돌 부위를 세세하게 지정해주는 편

충돌 상황 테스트

  • Unity-Chan 에는 Capsule Collider 가 붙어 있고,
    Plane 에는 Mesh Collider 가 붙어 있다
  • Plane에 있는 Mesh collider를 꺼버리면 또 우리의 Player는 중력의 영향을 받아서 한없이 추락

    💡 상대방도 충돌범위를 갖고 있어야함. 그래야 그 범위에 부딪혔는지 아닌지 판별할 수 있다.



Collison


profile
채우는중

0개의 댓글