EDR_Project 에서 사용될 도끼를 든 스켈레톤 잡몹 입니다.
EDR_Enemy_AxeSkeleton.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "MyCharacter.h"
#include "EDR_Enemy_AxeSkeleton.generated.h"
/**
*
*/
UCLASS()
class EDR_API AEDR_Enemy_AxeSkeleton : public AMyCharacter
{
GENERATED_BODY()
public:
AEDR_Enemy_AxeSkeleton();
protected:
//virtual void BeginPlay()override;
virtual void BeginPlay() override;
};
EDR_Enemy_AxeSkeleton.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "EDR_Enemy_AxeSkeleton.h"
#include "EDR_Enemy_SWeaponAxe.h"
AEDR_Enemy_AxeSkeleton::AEDR_Enemy_AxeSkeleton()
{
IsBoss = false;
DetectRange = 1500.0f;
IsFightStarting = true;
// hp 재정의
hp = 100.0f;
AttackDamage = 20.0f;
AttackRange = 300.0f;
AttackRadius = 150.0f;
SkillDamage = 20.0f;
SkillRange = 300.0f;
SkillRadius = 150.0f;
// 속도
TargetSpeed = 0.0f;
Acceleration = 10.0f;
Deceleration = 200.0f;
RotationSpeed = 1.0f;
StopDistance = 150.0f;
MaxWalkSpeed = 300.0f;
// 캐릭터 메시랑 캡슐콜리전
RootComponent = GetCapsuleComponent();
GetMesh()->SetupAttachment(GetCapsuleComponent());
GetCapsuleComponent()->SetCapsuleHalfHeight(88.0f);
GetCapsuleComponent()->SetCapsuleRadius(34.0f);
GetMesh()->SetRelativeLocationAndRotation(FVector(0.0f, 0.0f, -88.0f), FRotator(0.0f, -90.0f, 0.0f));
// 메시 받아오기
static ConstructorHelpers::FObjectFinder<USkeletalMesh>MODEL(TEXT("/Game/SKnight_modular/Skeleton_Knight_04/mesh/SK_SKnight_full_04.SK_SKnight_full_04"));
if (MODEL.Succeeded())
{
GetMesh()->SetSkeletalMesh(MODEL.Object);
}
// 공격
static ConstructorHelpers::FObjectFinder<UAnimMontage> ATTACK_MONTAGE1(TEXT("/Game/GJ/Animation/Enemy_Anim/SkeletonEnemy/Axe/Attack/Anim_DK_Combo_A03_RM_Montage.Anim_DK_Combo_A03_RM_Montage"));
if (ATTACK_MONTAGE1.Succeeded())
{
AttackMontage.Add(ATTACK_MONTAGE1.Object);
}
static ConstructorHelpers::FObjectFinder<UAnimMontage> ATTACK_MONTAGE2(TEXT("/Game/GJ/Animation/Enemy_Anim/SkeletonEnemy/Axe/Attack/Anim_Katana_Attack_Slash1_Montage.Anim_Katana_Attack_Slash1_Montage"));
{
AttackMontage.Add(ATTACK_MONTAGE2.Object);
}
// 사망 애니메이션 몽타주 저장
static ConstructorHelpers::FObjectFinder<UAnimMontage>DEATHANIM(TEXT("/Game/GJ/Animation/Enemy_Anim/SkeletonEnemy/Axe/Deaths_Hit_Head_Spinning_Montage.Deaths_Hit_Head_Spinning_Montage"));
if (DEATHANIM.Succeeded())
{
DeathMontage = DEATHANIM.Object;
}
// 공격 사운드 저장
static ConstructorHelpers::FObjectFinder<USoundCue>ATTACKSOUNDCUE1(TEXT("/Game/Voices_Of_Battle_FURIOUS_P1/Cue/03_Low_Pitch/Low_Furious_VOB_P2_1_Cue.Low_Furious_VOB_P2_1_Cue"));
if (ATTACKSOUNDCUE1.Succeeded())
{
AttackSoundCue.Add(ATTACKSOUNDCUE1.Object);
}
// 공격 사운드 저장
static ConstructorHelpers::FObjectFinder<USoundCue>ATTACKSOUNDCUE2(TEXT("/Game/Voices_Of_Battle_FURIOUS_P1/Cue/03_Low_Pitch/Low_Furious_VOB_P2_54_Cue.Low_Furious_VOB_P2_54_Cue"));
if (ATTACKSOUNDCUE2.Succeeded())
{
AttackSoundCue.Add(ATTACKSOUNDCUE2.Object);
}
// 공격 사운드 저장
static ConstructorHelpers::FObjectFinder<USoundCue>ATTACKSOUNDCUE3(TEXT("/Game/Voices_Of_Battle_FURIOUS_P1/Cue/03_Low_Pitch/Low_Furious_VOB_P2_2_Cue.Low_Furious_VOB_P2_2_Cue"));
if (ATTACKSOUNDCUE3.Succeeded())
{
AttackSoundCue.Add(ATTACKSOUNDCUE3.Object);
}
}
void AEDR_Enemy_AxeSkeleton::BeginPlay()
{
Super::BeginPlay();
// 게임 실행시 캐릭터 손에 무기 장착
FName WeaponSocket(TEXT("hand_rSocket"));
CurrentWeapon = (GetWorld()->SpawnActor<AEDR_Enemy_SWeaponAxe>(FVector::ZeroVector, FRotator::ZeroRotator));
if (nullptr != CurrentWeapon)
{
CurrentWeapon->AttachToComponent(GetMesh(), FAttachmentTransformRules::SnapToTargetNotIncludingScale, WeaponSocket);
//CurrentWeapon->SetActorRelativeRotation(FRotator(0.0f, 0.0f, 180.0f)); // 180도 회전
//CurrentWeapon->SetActorRelativeLocation(FVector(0.0f, 0.0f, -10.0f)); // 무기이동
}
}
BP_EDR_Enemy_AxeSkeleton
데미지 입었을때 이펙트 및 사운드 출력 로직
'Unreal Engine 5 > EDR_Project' 카테고리의 다른 글
EDR_Project / 캐릭터 사망시 소멸 이펙트 (0) | 2024.12.12 |
---|---|
EDR_Project / 나이아가라 시스템을 이용한 이펙트 (0) | 2024.12.12 |
EDR_Project / EDR_Enemy_WeaponSpear (0) | 2024.12.12 |
EDR_Project / SWeaponAxe (0) | 2024.12.12 |
EDR_Project / EDR_Boss_Giant (3) 창을 사용하는 보스 (0) | 2024.12.12 |