스토리지

7. 탄환에 쏜 적이 체력이 다 하면 사라지게 하기 본문

Unreal Engine/2. Twin Stick Shooter

7. 탄환에 쏜 적이 체력이 다 하면 사라지게 하기

ljw4104 2021. 10. 28. 19:05

결과물


적이 탄환에 맞고 체력이 떨어지려면 다음과 같은 과정이 필요하다.

탄환이 발사됨 -> 탄환이 적에 닿이면 삭제됨 -> 적에서는 이벤트가 들어오면 체력을 깎음

이와 같은 여러개의 블루프린트를 연동하기 위해서는 인터페이스가 필요하다.

 

인터페이스(Interface) 
- 블루프린트 <-> 블루프린트 간의 통신을 위한 것.
- 구현된 기능의 집합체
- 원하는 기능의 구조를 정의하고 그 인터페이스르르 구현하는 오브젝트에서 기능을 정의

 

아래는 공식 홈페이지의 설명

  • 인터페이스 클래스는 (잠재적으로) 무관한 클래스 세트가 공통의 함수 세트를 구현할 수 있도록 하는 데 쓰입니다. 그대로라면 유사성이 없었을 크고 복잡한 클래스들에 어떤 게임 함수 기능을 공유시키고자 하는 경우 매우 좋습니다. 예를 들어 트리거 볼륨에 들어서면 함정이 발동되거나, 적에게 경보가 울리거나, 플레이어에게 점수를 주는 시스템을 가진 게임이 있다 칩시다. 함정, 적, 점수에서 ReactToTrigger (트리거에 반응) 함수를 구현하면 될 것입니다. 하지만 함정은 AActor 에서 파생될 수도, 적은 특수 APawn 또는 ACharacter 서브클래스일 수도, 점수는 UDataAsset 일 수도 있습니다. 이 모든 클래스에 공유 함수 기능이 필요하지만, UObject 말고는 공통 조상이 없습니다. 이럴 때 인터페이스를 추천합니다.

 

1. Interface 작성

Blueprint -> Blueprint Interface 생성, 이름은 iDamagable (인터페이스는 i를 붙이는게 작명 국룰이다.)

이렇게 설정하면 다른 곳에서도 사용할 수 있다.

 

2. Projectile Blueprint에서 작성

Sphere Collider 의 Collision Preset 변경 및 HeroCharacter의 Tags 변경
탄환 Blueprint

  1. Overlap이 되었는지 판단
  2. Other Actor(맞은 Actor, 즉 enemy)
  3. Interface가 구현되어있는지 확인 후 Actor의 Tag가 Friendly가 아닌지 확인
  4. 모든 값이 True이면 미리 구현된 Affect Health 함수 호출
  5. 체력이 0이 되면 DestroyActor으로 액터 파괴함.

3. Affect Health 함수 구현

이렇게하면 Affect Health 이벤트를 구현할 수 있다.

  1. 이벤트가 발생
  2. C++로 구현된 Calculate Health 에 Damage 넣기 (-20)
  3. 남은 체력을 출력
  4. isDead인지 아닌지 확인 후 0 이하이면 DestroyActor 호출해서 사라지게 함.

'Unreal Engine > 2. Twin Stick Shooter' 카테고리의 다른 글

9. 주인공 Respawn 하기  (0) 2021.10.30
8. 적과 충돌 시, 캐릭터 체력 깎기  (0) 2021.10.30
6. 무기에서 탄환 나가게 하기  (0) 2021.10.27
5. 무기 빌드하기  (0) 2021.10.27
4. 적 AI 만들기  (0) 2021.10.27
Comments