Collision

CJB_ny·2022년 12월 11일
0

UE4

목록 보기
3/20
post-thumbnail

UE4에서는 충돌에 영향을 주고 받을 수 있는 두가지 유형의 Component가 있다.

  • Mesh

  • Shape Object


mesh의 경우 단순한것부터 수천 개의 vertex를 갖는 고해상도 캐릭터까지 개많음.

근데 물리엔진이 런타임에 충돌을 효율적으로 계산하기 위해서 Collision Mesh가 단순해야 하므로 일반적으로는 Collision mesh를 가능한 단순하게 유지하는 것이 좋다.

Collision을 가질 수 있는 mesh의 유형은

  • static mesh

  • 스켈레탈 mesh

  • Procedural mesh

  • etc

그러면 이런 Component들(mesh, shape object)이 어떻게 충돌하고 어떤일이 발생하냐면은?

충돌 이벤트

  • Block

    두 물체 모두 OnHit 이벤트가 호출됨. OnHit이벤트는 두 물체가 서로 충돌하는 순간서로의 경로를 막을 때마다 호출된다. 두 물체중 하나가 피직스를 시뮬레이션 할 경우 => SimulationGeneratesHitEvents 속성을 true 로 해야함.

  • Overlap

    두 물체 모두 GenerateOverlapEvent 속성이 true일 경우 두 물체에서 OnBeginOverLap, ObEndOverlap이벤트가 호출됨.

  • Ignore

    두 물체 아무런 이벤트 호출 하지 않는다.

물체간 충돌의 유형

  • 피직스 Physics

    공이 중력에 영향을 받고 바닥과 벽에서 튀어오르는 등 피직스 시뮬레이션과 관련된 모든 충돌

  • 쿼리 Query

    충돌을 두가지 측면으로 또 나눌 수 있다.

    [1] 두 물체의 충돌과 관련된 이벤트는 게임에서 호출하며추가 로직을 만드는데 활용할 수 있다.
    => OnHit 이벤트, OnBeginOverlap 이벤트, OnEndOverlap이벤트

    [2] 게임 안에서 충돌의 물리적 반응은 두가지 중 하나이다.
    => 두 물체가 서로 다른 물체가 없는 것처럼 계속 이동한다.
    => 두 물체가 서로 충돌하며 서로의 경로를 막는다.

"피직스 시뮬레이션"이란?

물리 엔젠은 현실에서 일어나는 물리적인 상황 구현을 도와주는 엔진입니다
피직스 시뮬레이션이란 현실에게 일어나는 물리적인 현상을 애셋에 적용시키는 것입니다.


파직스를 기반으로한 물리적 반응과 쿼리를 기반으로한 물리적 반응은 비슷할 수 있지만 다르다.

물체가 다르게 동작한다.

피직스를 기반으로하는 물리적 반응(피직스 시뮬레이션)은 한 물체가 피직스 시뮬레이션중인 경우에만 적용된다(중력에 영향을 받거나 벽 및 바닥에 튕기는 것들)

반면, 쿼리를 기반으로하는 물리적 반응은 피직스 시뮬레이션 중이 아닌 "모든" 물체에 적용된다.
어떤 물체를 코드로 제어하는 경우에는 피직스 시뮬레이션을 사용하지 않고도 이동시킬 수 있다.

코드로 물체를 제어하는 경우 벽에 부딪혔을 때 튕겨져 나오지 않고 단순히 멈출 수 있다.



Collison Presets

현재 큐브 클릭후 Collision섹션을 보면은

  • Simulation Generate Hit Events

    피직스 시뮬레이션을 할 때 OnHit이벤트를 호출 시키는 옵션

  • Generate OverlapEvents 옵션

    OnBeginOverlap/ObEndOverlap이벤트를 호출 시키는 옵션

  • CanCharacterStepUpOn

    캐릭터가 물체에 쉽게 오를 수 있도록 해주는 옵션

  • CollisionPresets

    개별 Collision Channel에 대한 이 물체의 반응을 지정할 수 있는 옵션

Collision Presets에서 물체에서 고려할 충돌 방식을 쿼리, 피직스, 둘다, No Collision 중에 선택 가능함.

Physics Coliision은 피직스 시뮬레이션과 관련이 있다. 즉, 피직스를 시뮬레이션 하는 다른 물체가 이 물체를 고려하는지 여부와 관련 있다는 말이다.

반면 쿼리 콜리젼은 충돌 이벤트와 다른 물체의 움직임을 막을지 여부를 결정하는 것과 관련이 있다.

Object Type 속성

오브젝트 충돌을 위한 특별한 옵션이다.이 옵션은 어떤 유형의 충돌 오브젝트인지를 나타냄.

  • WorldStatic : 움직이지 않는 오브젝트 (구조, 건물 등)
  • WorldDynamic : 움직일 수 있는 오브젝트 (코드를 통해 움직이거나 플레이어같은거)
  • Pawn : 레벨에서 조종하고 움직일 수 있는 폰Pawn에 사용
  • PhysicsBody : 피직스 시뮬레이션 할 수 있는 오브젝트에 사용
  • Vehicle : 차랑 오브젝트
  • Destructible : 디스트럭터블 mesh에 사용

커스텀 object type도 만들 수 있음.

Collision Presets

  • No Coliision : 어떤 방식으로도 충돌에 영향을 받지 않는 물체에 적용

    플레이어가 닿을 수 없는 위치에 있고 아주 멀리있는 시각적인 용도애

  • Bloack All : 위치가 고정되어있고 다른 모든 물체를 막는 물체에 사용

    바닥, 벽같은거

  • Overlap All : 위치가 고정되어있고 다른 물체와 곂치는 용도

    레벨에 배취돼 움직이지 않는 트리거 박스

  • Overlap All Dynamic : Bloack All과 비슷하지만 게임플레이 중에 트랜스폼을 변경할 수 있는 물체에 적용
  • Pawn : Pawn과 캐릭터에 사용

    플레이어 캐릭터와 플레이어가 아닌 다른 캐릭터

  • Physics Actor : 피직스를 시뮬레이션하는 물체에 사용

    바닥과 벽에 부딪혀 튕기는 공, 물리에 영향을 받는 물체

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글