1. 공격 몽타주에 게임플레이 이벤트 설정
(1) 근거리 고블린 공격 몽타주
새로운 노티파이 트랙인 Events를 만들고, 기존에 Aura의 파이어볼트 구현 때 사용했던 노티파이(AN_Montage_Event)를 사용한다.
새로운 게임플레이 태그를 만들어 적용한다.
(2) GA_MeleeAttack 게임플레이 어빌리티 수정
Wait Gameplay Event 노드를 사용해 Attack.Melee 태그를 가진 노티파이가 이벤트를 호출하기까지 대기한다.
이벤트를 수신받으면 디버그 구체를 그린다.
(3) 무기 소켓에 디버그 구체 그리기
무기 소켓의 위치를 구하는 것은 전투 인터페이스에 구현되어있다.
이 함수를 블루프린트에서 호출이 가능한 BlueprintCallable로 지정하고, BlueprintNativeEvent로 지정하여 오버라이드 할 것이다.
class AURA_API ICombatInterface
{
GENERATED_BODY()
// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
virtual int32 GetPlayerLevel();
UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
FVector GetCombatSocketLocation();
- BlueprintNativeEvent로 지정된 함수는 virtual로 선언할 수 없다.
- BlueprintNativeEvent로 지정된 함수는 cpp 파일에서 정의되면 안 된다.
- BlueprintNativeEvent로 지정된 함수를 C++에서 호출할 때는 Execute_ 접두어를 붙인다.
- C++에서 오버라이드할 때 아래와 같이 구현부를 붙여야 한다.
(함수명)_Implementation
이 함수를 사용하던 클래스에서도 함수 이의 수정이 필요하다.
(3-1) AuraCharacterBase
virtual FVector GetCombatSocketLocation_Implementation() override;
FVector AAuraCharacterBase::GetCombatSocketLocation_Implementation()
{
check(Weapon);
return Weapon->GetSocketLocation(WeaponTipSocketName);
}
(3-2) BP_Goblin_Spear 블루프린트
무기 끝의 소켓 이름을 지정한다.
(3-3) GA_MeleeAttack 게임플레이 어빌리티 블루프린트
2. AuraProjectileSpell 클래스 디버그
플레이어 캐릭터가 파이어볼트를 발사하면 변경된 GetSocketLocation 함수로 인해 크래시가 발생한다.
void UAuraProjectileSpell::SpawnProjectile(const FVector& ProjectileTargetLocation)
{
const bool bIsServer = GetAvatarActorFromActorInfo()->HasAuthority();
if (!bIsServer)
return;
const FVector SocketLocation = ICombatInterface::Execute_GetCombatSocketLocation(GetAvatarActorFromActorInfo());
// 소켓에서 타겟까지의 벡터의 각도만 가져옴
FRotator Rotation = (ProjectileTargetLocation - SocketLocation).Rotation();
FTransform SpawnTransform;
SpawnTransform.SetLocation(SocketLocation);
SpawnTransform.SetRotation(Rotation.Quaternion());
GetCombatSocketLocation 함수는 BlueprintNativeEvent 함수의 특성 상 객체의 인스턴스를 통해 호출된다.
아바타 액터를 넘겨주고 해당 액터의 인스턴스를 사용하여 소켓의 위치를 가져온다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
14-5. AI 근거리 공격 - (5) 근접 공격 데미지 (0) | 2024.12.30 |
---|---|
14-4. AI 근거리 공격 - (4) 구체 반경 내의 살아있는 액터 찾기 (0) | 2024.12.30 |
14-2. AI 근거리 공격 - (2) 공격 몽타주, 모션 워핑 (0) | 2024.12.30 |
14-1. AI 근거리 공격 - (1) 공격 게임플레이 어빌리티 생성 및 활성화 (0) | 2024.12.30 |
13-10. AI - (8) 원거리 몬스터 - 비헤이비어 트리에 EQS 활용하기 (0) | 2024.12.27 |