일자로 적을 베는 공격을 만들어보도록 하겠습니다
먼저 연출을 위해 캐릭터가 잠시 공격할때 잠깐 사라졌다가 보이게세팅합니다
캐릭터를 앞방향으로 움직여보겠습니다
필요한 변수와 함수를 선언합니다
bSSkillMoving은 움직임의 위치에 도착했을때를 알리는 플래그변수
SSkillTargetLoc 은 도착할 위치
sSkillMoveSpeed는 움직일 속도
SkillSMoving함수는 tick에서 작동할 bSSkillMoving변수가 바뀌면 호출될 함수
StartSSkillMove함수는 움직임을 할 함수입니다
캐릭터의 tick에서
bSSkillMoving플래그가 true면 SkillMoving함수가 호출되도록 세팅합니다
현재위치부터 FMath::VInterpTo() 함수로 벡터 보간이동을 할껀데
skillSNewLoc은 캐릭터의 새로운 위치를 계산할 벡터입니다
현재위치 (currentSLoc부터 도착위치 SSkilltargetLoc까지 DeltaTime으로 sSkillMoveSpeed속도로 움직입니다)
위치를 새로운 위치로 바꿔주고
만약 새로운위치와 타겟위치가 1보다 작아진다는 거의 가까워졌을때니 목표에 도착했으면
bSSkillMoving플래그를 다시 false로 변경
이제 노티파이에서 호출시킬 벡터위치를 계산하고 플래그를 바꿔줄 함수를 만듭니다
StartSSkillMove함수는 노티파이에서 호출할 함수이며 처음 노티파이가 호출될때 한번 위치를 계산합니다
위치는 현재캐릭터 위치에서 앞 방향 800만큼입니다
게임인스턴스에서
이렇게 만들어주고 SSkillMoving노티파이를 해당 애니메이션에 찍어줍니다
그리고 모션워핑도 설정해주겠습니다
그리고 저번에 만들었던 잠시 적과의 충돌을 무시하는 노티파이도 찍어줍니다
근데 이렇게 이동하면 벽에 가까이서 사용하면 낑기는 현상이 발생합니다
이럴때는 Sweep 처리를 반드시 해줘야합니다
Sweep처리란 이동 중에 다른 물체와 충돌을 감지하고 반응을 처리하는 방식을 뜻합니다
동일하게 vinterpTo로 이동을 하나 새로운 moveVector
이번프레임에 얼마나 이동할지 에 대한 벡터를 구합니다
그리고 충돌체크를 확인하기위한 hit
AddActorWorldOffset으로 moveVector에서 true를 하면 스윕(Sweep)을 활성화하여 충돌을 감지합니다
목표위치와 현재위치가 < 1.0 가까워졌으면 더이상 bSSkillMoving을 하지않습니다
그리고 전에 만들어놨던 데미지를 입히는 데미지액터도 크기에 맞게 스폰해줍니다
액션에 맞는 나이아가라도 추가해줍니다
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
Unreal - Ghost Trail(고스트 트레일) 잔상 (0) | 2025.04.23 |
---|---|
Unreal - Radial Blur 기법 (신속 블러) (0) | 2025.04.22 |
Unreal - 어색한 충돌 처리 해결하기 (0) | 2025.04.21 |
Unreal - 공중 공격 - (2) (0) | 2025.04.20 |
Unreal - 공중 공격 - (1) (0) | 2025.04.15 |