HIT 이벤트 사용 전 알면 좋은 것들
Player의 Capsule 컴포넌트뿐만 아니라 Mesh 컴포넌트 또한 콜리전이 있기에, 먼저 오브젝트와 충돌이 일어나는 쪽이
충돌 검사가 일어나게 된다.
만약 Root 컴포넌트가 충돌을 감지할 수 없는 컴포넌트라면, 이하의 자식 컴포넌트들도 모두 충돌 검사를 할 수 없다.
Tick 이벤트는 가능하면 많이 안쓰는 것이 좋다. 여러 곳에서 쓰면 쓸수록 프레임이 도는 시간이 오래 걸리기 때문이다.
- Tick Interval : Tick 이벤트의 반복 간격
- Allow Tick Before Begin Play : BeginPlay 이벤트 호출되기 이전에 Tick 이벤트 발생 여부
Collision Enabled
- No Collision : 객체가 다른 객체와 상호작용이 발생하지 않고, 충돌이 발생하지 않는다.
- Query Only (No Physics Collision) : 객체는 충돌에 대한 정보를 가져올 수 있지만, 다른 객체에 영향을 주거나 물리 계산에 영향받지 않는다.
- Physics Only (No Query Collision) : 객체가 물리 계산에 영향 받을수 있으며 다른 객체와 충돌에 대해 물리적인 영향을 줄 수 있고, 충동 결과에 따라 이동하거나 힘들 받을 수도 있다.
- Collision Enabled (Query and Physics) : 객체가 다른 객체와의 충돌을 감지하며 충돌 결과에 따라 물리 계산 수행하고 상호작용을 받을 수 있으며 물리적인 효과와 영향을 준다.
콜리전 프리셋(Preset) / Object Type 추가
원하는 프리셋이 없어서 해당 커스텀을 사용하지만, 해당 커스텀을 모든 오브젝트에 적용(수정)해야하는 번거로움이 생길 수 있다. 이것을 쉽게 관리할 수 있도록 콜리전 프리셋, 오브젝트 타입을 사용한다.
편집 - 프로젝트 세팅 - 엔진 - 콜리전 으로 들어가면 아래를 확인할 수 있다.
오브젝트 타입 추가 방법
프리셋 추가 방법
Static Mesh ↔ Skeletal Mesh 변환
Skeletal Mesh → Static Mesh
스켈레탈 메시에서 스태틱 메시 만들기 눌러서 저장 (스켈레탈메시에 적용 되어있는 머티리얼도 따로 뺄 수 있는 듯하다)
Static Mesh → Skeletal Mesh
export로 추출시킨 후 다시 임포트 시킬 때 스켈레탈 메시에 체크 해주면 된다.
하지만 이런방식으로는 본을 따로 추가할 수 없다. 애니메이션 제작하는 외부프로그램으로 만들어서 가져와야 한다.


이제 본격적으로 무기를 휘두를 시 대미지를 주는 방식을 구현해 보자
우리가 만든 BP_weapon은 근접무기로 사용할 것을 추상화한 클래스이다.
그러므로 앞으로 근접무기를 만들 시 BP_weapon으로 충돌 판정을 하나로 정리할 수 있다.
지금 까지 배운 충돌 판정들은 Hit, overlap, Ignore이 있으며 overlap을 사용해 볼 것이다.
따라서 BP_weapon에 오버라이드 가능한 함수들 중 ActorBeginOverlap 이벤트를 사용할 것이다.
Apply Damage
ActorBeginOverlap에서 입력받은 Actor를 Character로 형변환하면서 Life 체력을 불러와 Damage만큼 빼주는 로직을 구현
하면 되지만, 이미 언리얼엔진에 Apply Damage 함수로 구현되어 있다.
Apply Damage노드에 오른쪽 위에 데스크톱 모양의 아이코는 서버에서 실행된다는 의미를 말한다.
서버가 없으면 로컬환경에서 실행하게 된다.
- Damaged Actor :
ㄴ 대미지를 받을 대상이 되는 액터
ㄴ 대미지를 받을 대상 액터의 참조가 전달된다.
- Base Damage :
ㄴ 적용할 대미지의 기본 값
ㄴ 대미지 계산에 사용되는 기본값으로, 실제로 대미지가 적용되기 전에 계산에 사용될 수 있다.
- Event Instigator :
ㄴ 대미지를 발생시킨 액터
ㄴ 대미지를 발생시킨 주체를 식별하는 데 사용된다. (플레이어가 던진 폭탄이 터져 대미지를 주었을 경우 -> 주체자는 플레이어이다)
- Damage Causer :
ㄴ 대미지를 발생시킨 액터
ㄴ 대미지를 발생시킨 액터를 식별하는 데 사용된다. (플레이어가 던진 폭탄이 터져 대미지를 주었을 경우 -> 주체자는 폭탄이다)
- Damage Type Class :
ㄴ 적용할 대미지의 유형을 지정하는 클래스
ㄴ 매개변수는 대미지의 유형에 따라 추가적인 정보를 전달하기 위해 사용된다.
AnyDamage 이벤트
- Damage :
ㄴ 적용된 대미지의 양을 나타낸다.
ㄴ 일반적으로 양수로 표현되며, 대상에게 가해진 피해의 크기를 나타낸다.
- Damage Type
ㄴ 적용된 대미지 유형을 식별하는 클래스
ㄴ 대미지의 종류를 구분하고, 해당 대미지 유형에 따른 추가적인 정보를 제공할 수 있다.
- Instigated By
ㄴ 대미지를 발생시킨 주체(액터)를 나타낸다.
- 대미지를 가하는 주체를 식별하는 데 사용된다.
(플레이어가 적을 칼로 공격하여 대미지를 가한 경우, 플레이어 액터가 Instigated By로 전달될 수 있다.)
- Dagame Causer
ㄴ 대미지 원인이 되는 액터를 나타낸다.
ㄴ 대미지를 발생시킨 실제 대상을 식별하는데 사용된다.
(플레이어가 적을 칼로 공격하여 대미지를 가한 경우, 칼의 액터가 Damage Causer로 전달될 수 있다.)
'[unrealengine4]' 카테고리의 다른 글
2023-06-13 언리얼 (멀티 타격, Contains, Set 유형, DestoryActor(소멸)) (0) | 2023.06.14 |
---|---|
2023-06-09 언리얼(충돌 판정 수정, animNotifystate) (0) | 2023.06.11 |
2023-06-07 언리얼(Hit 이벤트, 델타타임, Append, 피직스) (0) | 2023.06.11 |
2023-06-02 언리얼 (충돌, On Component Begin Overlap) (0) | 2023.06.06 |
2023-06-01 언리얼 (블랜드 스페이스 2D ,Calculate Direction, 캐릭터와 camera 시점 고정) (0) | 2023.06.06 |