MSW에서는 3가지의 TweenComponent를 제공한다.
컴포넌트의 이름에 따라 원점을 기준으로 동작하는 방식과 프로퍼티에서의 차이를 가진다.
각 컴포넌트에 속한 프로퍼티는 프로퍼티 클릭 시 조정하는 기능에 대한 설명이 표시된다.
RigidbodyComponent
는 강체의 물리적인 속성을 컨트롤 할 수 있는 컴포넌트이다.
Gravity
: Gravity 프로퍼티의 값 조정을 통해 공중에 떠 있거나 지면에 떨어지도록할 수 있다.
IsBlockVerticalLine
: 세로 방향의 Foothold 를 설정할 수 있다.
IsQuaterViewMove
: 프로퍼티의 값 조정을 통해 컴포넌트가 지형에 떨어지지 않고 자유롭게 움직일 수 있도록 설정할 수 있다.
MovementComponent
는 이동 속도와 점프의 정도, 활성화의 여부를 조절하는 프로퍼티가 존재한다.
InputSpeed
프로퍼티의 조정을 통해 이동 속도를 설정하고,
JumpForce
프로퍼티의 조정을 통해 점프의 정도를 설정한다.
TriggerComponent
는 엔티티의 충돌을 감지하는 컴포넌트이다.
MSW에서의 충돌
이란 충돌체를 포함하고 있는 엔티티의 충돌 영역이 서로 교차했을 때를 의미한다.
충돌체의 경우 TriggerComponent
나 HitComponent
와 같은 컴포넌트를 엔티티에 추가할 경우 자동으로 생성된다.
TriggerComponent
또는 HitComponent
를 가지도 있지 않은 객체와의 충돌은 감지할 수 없다.
HitComponent
: 피격의 범위를 설정할 때 충돌체 사용TriggerComponent
: 충돌이 일어나는 범위를 설정할 때 충돌체 사용Collider
: 프로퍼티 에디터의 Edit 버튼을 누를 경우 엔티티에 충돌체가 나타난다.BoxOffset & ColliderOffset
: 충돌체의 위치 설정BoxSize
: ColliderType 이 Box 일 경우 충돌체의 크기를 설정CircleRadius
: ColliderType 이 Circle 일 경우 충돌체의 크기를 설정ColliderType
: 충돌체의 형태 선택, Box의 경우 충돌체를 사각형으로, Circle의 경우 원형으로 변경IsLegacy
: TransformComponent 에 영향을 받을지 여부를 설정스크립트 작성을 통해 이벤트를 받아 충돌 시 핸들 처리를 해줌으로써 충돌을 처리할 수 있다.
액션 추가는 아래와 같은 순서로 진행된다.
액션을 수행할 핸들러는 리액터가 되는 스크립트의 Entity Envent Handler를 통해 추가해준다.
검색창에 Trigger 입력을 통해 아래 이벤트 핸들러를 선택할 수 있다.
TriggerEnterEvent
: 엔티티 간 처음 충돌이 발생했을 때 1회 발생TriggerStayEvent
: 엔티티가 충돌 중이면, 프레임마다 발생TriggerLeaveEnvent
: 엔티티가 충돌되었다가 충돌이 끝났을 때 1회 발생충돌 Event Sender
설정을 통해
리액터 컴포넌트가 추가된 엔티티의 충돌 이벤트를 받는 경우에는 값을 self
로,
외부 안티티의 충돌 이벤트를 받는 경우에는 Entity
로 설정해 준다.
위 이미지는 확장 TriggerComponent
를 활용한 충돌 처리이다.
엔티티에 충돌 이벤트가 발생할 경우 호출되는 자체 함수를 통해 엔티티의 충돌 시 처리 로직
을 추가해준다.
로직은 아래의 순서에 따라 추가해 준다.
1. TriggerComponent 확장
2. 함수 오버라이드
OnEnterTriggerBody
: 엔티티 간 충돌이 처음 발생했을 때 1회 호출OnStayTriggerBody
: 엔티티 간 충돌이 발생한 뒤, 두 엔티티가 겹쳐있는 동안 프레임마 다 호출OnLeaveTriggerBody
: 엔티티 간 충돌이 종료될 때 1회 호출Player
컴포넌트는 플레이어에 대한 로직을 스크립트로 추가할 수 있다.
위 HandleTriggerEnterEvent
함수는 장애물과의 충돌이 들어오는 시점
에서 호출되는 함수이다.
함수의 매개변수로 TriggerEnterEvent
이벤트를 받아온 뒤, 함수 내부에서 수행할 명령어를 입력해준다.
충돌 이벤트 샌더를 self
로 선언해줌으로써 리액터 컴포턴트가 추가된 엔티티의 충돌 이벤트를 받게된다.
PlayerControllerCompnent
는 플레이어를 컨트롤하는 컴포넌트이다.
LookDirection
: 현재 X축을 기준으로 캐릭터가 바라보고 있는 방향을 의미FixedLookAt
: 캐릭터가 바라보고 있는 방향을 고정시키는 것