게임개발/Unreal 블루프린트

[Unreal_블루프린트]#10_Collision, Damage

Hardii2 2022. 9. 6. 23:31

 

[Unreal_블루프린트]#10_Collision, Damage

Unreal 블루프린트 개발 중 "Collision"에 대해 알아보겠습니다.

"블루 프린트" 활용에 대한 내용입니다.

 

 


 

Weapon의 Collision 구현

 

1. BeginPlay 구현

Sword 블루프린트의 Event Graph 중 Begin Play 이벤트 구현

1. Begin Play 이벤트 생성
2. Set Collision Enabled 이벤트 생성
3. 충돌 처리는 "Capsule Component(Scene Component)"가 담당하므로, Capsule을 연결
4. Type 설정에서 No Collision 설정

* 공격 중이  아닐 경우 Collision이 발생해선 안되기 때문에, Collision을 끕니다.

2. Animation Notify State 생성

Anim Notify State 생성

1. 우 클릭 -> 블루프린트 클래스 생성
2. 모든 클래스 -> *AnimNotifyState 생성
* Anim Notify State?

Notify와 기능은 동일하지만, 단순히 "Begin"과 "End"를 지정해 시작과 끝 지점 안에서만 발동됩니다.
Animation의 플레이 도중 "Begin ~ End" 구간에 도달하면 이벤트 그래프가 발동됩니다!

 

3. Anim Notify State 구현

Anim Notify State 중 "Received Notify Begin"과 "Received Notify End"의 Event Graph

1. Get Owner 노드와 BP_Player 형변환 노드를 통해 Player 객체의 참조를 얻어옵니다.
2. Character 블루프린트에서 미리 생성한 "Sword" 객체의 "Capsule" 컴포넌트를 얻어옵니다.
3. "Set Collision Enabled"를 켜고 끔으로써 Notify State의 Event Graph를 구현합니다.

* 공격 시작 시점에 Collision을 켜고, 공격이 끝나는 시점에 Collision을 꺼야겠죠!

 

4. Animation 몽타주에 Anim Notify State 추가

Standing Attack 1 애니메이션 몽타주 화면

 

Damage

 

1. Apply Damage 이벤트 구현

Sword 블루프린트 클래스의 Event Graph

1. Capsule Component가 갖고 있는 Begin Overlap 이벤트 생성
2. Get Owner -> 형 변환을 통해 Sword를 소유하는 Character는 대미지 구현에서 제외
3. Apply Damage 함수 생성
4. Apply Damage 함수 입력에 알맞는 노드들 연결

* Event Instigator는 Damage를 입히는 주체를 컨트롤하는 즉 칼을 소유하고 있는 캐릭터를 의미!

 

2. Any Damage 구현

Enemy 블루프린트 클래스의 Event Graph

1. Any Damage 이벤트 생성
2. 전달 받은 Damage 양과 Damage Causer를 알 수 있습니다.