Unreal Engine/Personal Portfolio Report - ARPG

5일차

보별 2025. 5. 11. 13:51
반응형

회피 추가; 현재 플레이어의 방향 각도 확인 후 각도 별로 설정한 애니메이션 재생 (inRange Float 활용)

각종 공격 사용 시 콤보 어택 초기화 추가

Attack Actor Component에서 플레이어를 캐스팅한 뒤 가져오는 변수는 활성화되지만, 변수를 조건으로 삽입 시 변수 인식이 안되는 문제 발견 -> 해결하면 대시 어택 정상 작동

차지 어택, 패리 어택, 궁극기 후 움직이지 않았던 현상 수정; delay 노드보다 앞쪽에 Set Movement 노드 배치

각종 공격 사용 시 조건 추가해야함

 

*프로젝트가 터진 원인: 생성자 문제

ABP EventGraph에서 Blueptrint BeginPlay에 플레이어를 Casting 한 후 바로 변수를 추가하면 오류 발생; 변수는 업데이트 돼야하는데 업데이트가 되지 않기 때문

BP로 ABP에서 변수를 가져올 시 아래와 같이 해줘야함

이번에는 이쪽 부분을 BP로 하지 않고 코드로 처리

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
32
33
34
35
36
37
PlayerControl.h
 
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
bool isFist;
 
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
bool isKatana;
 
 
PlayerAnimInstance.h
 
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Character")
bool isFist = false;
 
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Character")
bool isKatana = false;
 
 
PlayerAnimInstance.cpp
 
void UPlayerAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
    Super::NativeUpdateAnimation(DeltaSeconds);
 
    if (!Player) return;
 
    isFist = Player->isFist;
    isKatana = Player->isKatana;
 
    if (Movement)
    {
        Velocity = Movement->Velocity;
        MoveSpeed = Velocity.Size2D();
        Angle = UAnimInstance::CalculateDirection(Velocity, Player->GetActorRotation());
        isFalling = Movement->IsFalling();
    }
}
cs

위와 같이 PlayerContorl에서 변수 추가 후, PlayerAnimInstance에서 해당 변수를 가져와서 사용

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
PlayerAnimInstance.h
 
//UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Character")
//class ACharacter* Owner;
 
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Character")
class APlayerControl* Player;
 
 
PlayerAnimInstance.cpp
 
void UPlayerAnimInstance::NativeInitializeAnimation()
{
    Super::NativeInitializeAnimation();
 
    //Owner = Cast<ACharacter>(GetOwningActor());
    Player = Cast<APlayerControl>(TryGetPawnOwner());
 
    //if (Owner)
    //{
        //Movement = Owner->GetCharacterMovement();
    //}
 
    if (Player)
    {
        Movement = Player->GetCharacterMovement();
    }
}
cs

코드로 작성하는 김에 Owner를 Player로 바꿔줌; Owner에서 가져온 ACharacter는 언리얼에서 제공되는 캐릭터 액터를 참조하지만 지금 여기서는 PlayerControl + PlayerAnimInstance를 연동해서 사용할 것이기에 바로 Player를 캐스팅 하여 효율 높임

*아래와 같이 Visual Studio에서 빨간 밑줄이 생기는 이유: 경로 탐색 실패

Generate 실행

이렇게 해도 안되면 위 그림과 같이 폴더와 프로젝트 파일을 남긴 후 Generate

'Unreal Engine > Personal Portfolio Report - ARPG' 카테고리의 다른 글

7일차  (0) 2025.05.14
6일차  (0) 2025.05.12
4일차  (0) 2025.05.10
3일차  (0) 2025.05.09
2일차  (0) 2025.05.08