언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

AbilityTasks - 4) 투사체 충돌 처리

monstro 2025. 8. 18. 00:51
728x90
반응형

- 개요

투사체의 CollisionChannel을 만들어 특정한 Actor에 대해서만 충돌을 할 수 있도록 진행한다

Niagara 모듈을 추가하여 투사체가 날아가는 동안 FX 효과를 연출한다

 

- 사전 작업

Aura.build.cs

 

프로젝트의 build.cs 파일에 위와 같이 Niagara 모듈을 추가한다

 

 

프로젝트의 Project Settings에 위와 같이 투사체의 CollisionChannel을 추가한다

 

1) Aura 클래스

 

주 모듈인 Aura 클래스의 헤더 파일투사체에 대한 CollisionChannel에 접근할 수 있도록 전처리기를 추가한다

 

2) AuraProjectileSpell 클래스

 

SpawnProjectile 함수에서 생성하는 투사체의 InstigatorAvatarActor플레이어 캐릭터로 설정한다

 

3) AuraCharacterBase 클래스

 

프로젝트에 존재하는 모든 캐릭터들 투사체에 대해 Overlap 이벤트를 발생시킬 수 있도록 설정한다

 

4) AuraProjectile 클래스

 

생성한 투사체를 파괴시킬 수 있도록 Destroyed 함수를 오버라이드한다

 

 

투사체의 피격여부를 판단할 불리언 변수를 추가한다

 

 

투사체가 날아가면서, 또 피격하면 발생시킬 VFX와 SFX를 추가한다

 

 

생성자에 로직을 추가하여 투사체의 CollisionChannel투사체의 채널로 설정한다

 

 

BeginPlay 함수에서는 투사체가 날아가면서 발생시킬 SFX를 설정한다

 

 

Destroyed 함수의 오버라이드한 로직은 위와 같다

서버에서는 FX 관련 효과를 처리하지 않으므로 클라이언트에서 피격시 FX 효과를 처리한다

FX 효과를 처리한 후에 부모 버전의 Destroyed 함수를 호출한다

 

 

비워놓았던 OnSphereOverlap 함수의 로직을 위와 같이 구성하였다

우선, 투사체를 발사한 주체와 Overlap되지 않도록 얼리 리턴한다

이후 피격하는 경우FX 효과를 연출한다

최종적으로 서버에서는 피격후에 AuraProjectile의 인스턴스를 파괴하고,

클라이언트에서는 해당 인스턴스의 피격여부만 설정한다

 

- 최종 실행 결과

 

728x90
반응형