티스토리 뷰

Aura Projectile

테스트 어빌리티에서 실제 공격 어빌리티로 확장할 차례이다.

첫 번째로 Aura가 직접 시전할 수 있는 불덩어리 발사체를 발사하는 마법 주문을 만들 것이다.

해당 주문은 발사체 기반의 주문으로, 나이아가라 시스템을 통해 이펙트를 구현한다.

 

어빌리티 활성화를 위해 실제 Projectile을 Spawn하도록 구현할 것이다.

이를 위해 먼저 Proejctile의 기반이 되는 Actor를 생성한다.

 

Projectile은 매 프레임 직접 처리해야할 로직이 현재 필요하기 않기에 Tick 코드는 제거해주었다.

그리고 오브젝트의 형태는 Sphere로 구성하였으며, 다른 오브젝트와의 충돌을 감지할 수 있도록 Overlap 함수를 추가하였다.

UPrimitiveComponent* OverlappedComponent - Overlap 이벤트가 발생한 자신의 Component
AActor* OtherActor - 겹친 상대 Actor
UPrimitiveComponent* OtherComp - 상대 Actor의 Component
int32 OtherBodyIndex - 상대 Body Index
bool bFromSweep - Sweep에 의해 발생한 Overlap인지 여부 (false 예시 : 처음부터 서로 겹친 위치 생성)
const FHitResult& SweepResult - Sweep 결과 정보

 

해당 함수는 Dynamic Delegate에 연결해야하므로 UFUNCTION으로 선언한다.

 

생성자에서 가장 먼저 Sphere Component를 생성하고, 해당 Sphere를 Root Component로 설정한다.

Projectile은 물리적인 충돌보다는 Overlap 감지를 목적으로 사용하기 때문에 Collision Enabled를 QueryOnly로 설정하여 물리 시뮬레이션 없이 충돌 감지만 수행하도록 한다.

 

그리고 기본적으로 모든 Collision Channel을 Ignore하도록 설정한 뒤, 실제 게임에서 충돌을 감지할 대상인 WorldStatic, WorldDynamic, Pawn 채널만 Overlap으로 설정한다.

예를 들어 WorldStatic은 벽이나 바닥과 같은 정적인 오브젝트, WorldDynamic은 움직이는 오브젝트, Pawn은 플레이어와 적 캐릭터 등이 해당한다.

 

세팅 이후에는 시작 함수에서 Overlap 함수를 미리 바인딩해주었다.

 

추가적으로 Projectile 움직임에 대한 변수도 추가해주었다.

public 영역에 배치했는데, 이는 향후 클래스 외부에서 Projectile Movenet에 접근해야할 가능성이 있기 때문이다.

(유도 발사체 구현, 이동 관련 속성 변경 등)

 

마찬가지로 생성자에서 컴포넌트를 생성해주고, 초기 속도와 최고 속도를 설정해주었다.

그리고 중력의 영향은 받지 않고 일정한 속도로 직선 이동하도록 하였다.

 

이제 컴파일 후 블루프린트 클래스를 생성해주자.

 

가장 먼저 나이아가라 시스템을 추가하고, 이전에 봐둔 Fire 이펙트를 설정한다.

 

해당 Projectile을 맵에 배치후 실행시켜보면, 설정된 속도로 직선 이동을 하는 모습을 볼 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함