TIL_040: 애니메이션, 아이템 객체 생성

김펭귄·2025년 9월 30일

Today What I Learned (TIL)

목록 보기
40/115

오늘 학습 키워드

  • 캐릭터에 애니메이션 적용

  • 아이템 객체 생성해보기

1. 캐릭터에 애니메이션 적용

Event Graph

  • 캐릭터의 움직임에 따른 애니메이션을 넣기 위해, Movement Component를 가져옴

  • Event BlueprintInitializeAnimation : 애니메이션 블루프린트가 초기화될 때 실행되는 이벤트

  • Get Owning Actor : 현재 애니메이션을 재생 중인 액터를 get

  • CharacterCharacterMovement를 가져옴

  • Event BlueprintUpdateAnimation : 프레임마다 호출되는 이벤트

  • 이동속도와 공중에 있는지를 확인하는 변수 MoveSpeedIsFalling을 설정

AnimGraph

  • 이전에 만들었었던 Anim Graph와 비슷하게 구현

  • State Machine을 생성 후 캐시로 만들어(LocoMotion) 다른 State Machine속에서 사용 가능(Main State)

  • Apply Additive를 이용해 서로 다른 애니메이션을 부드럽게 연결해서 표현
    (Land State에서 착지하는 모션과 움직이는 모션을 부드럽게 연결)

  • 지면에 착지했을 경우, Control Rig를 이용해 IK작업을 해줌

  • IK를 통해 지면이 울퉁불퉁하여도 지면에 맞게 잘 애니메이션이 만들어짐

  • 공중에서는 IK해줄 필요 없으므로, IsFalling이 거짓일때만 해줌

2. 인터페이스

  • 지뢰, 코인, 포션 등 여러 아이템을 만들 때 서로 공유하는 속성과 동작들이 있음

  • 그래서 Interface를 이용하게 되는데, Unreal에서도 C++로 제공함

  • UINTERFACE(MinimalAPI) : 인터페이스를 리플렉션 시스템에 등록하기 위한 매크로. MinimalAPI는 해당 모듈안에서만 접근을 허용하게 해주는 옵션

  • class UItemInterface : public UInterface
    리플렉션을 위한 인터페이스. 보통 수정하지 않음

  • class SPARTAPROJECT_API IItemInterface
    순수가상함수를 직접 추가해주는 부분

  • OnItemBeginOverlap : 플레이어가 아이템 범위에 들어왔을 때 동작

  • OnItemEndOverlap : 플레이어가 아이템 범위를 벗어났을 때 동작

  • ActivateItem : 아이템이 사용(Activate)되었을 때 동작

  • GetItemType : 아이템 유형(이름)을 반환

  • DestroyItem : 아이템 제거

3. 아이템 부모클래스 생성

  • AActorItemInterface를 상속받는 BaseItem을 생성

  • 인터페이스 아니고 객체이므로, 순수가상함수를 꼭 override 해줘야함

헤더

  • ItemType : 아이템 이름은 기획자들이 수정하기 때문에 에디터에서 수정할 수 있도록 설정(리플렉션 시스템)
    FName으로하여 경량화

cpp

  • 일단 Tick 사용 안 하도록 false로 설정

  • BaseItem은 가장 기본객체이므로 대부분의 함수를 비어둠. 각 자식 클래스에서 구현

  • DestroyItem : AActor에서 제공하는 Destroy() 함수로 객체 제거

4. 동전, 지뢰, 힐링아이템 만들기

  • 동전의 경우 큰 동전은 50점, 작은 동전은 10점으로 한다고 할 때, 이 둘의 부모클래스인 CoinItem을 추가로 만들어야 함

CoinItem

  • 코인의 점수를 저장할 PointValue 변수. 마찬가지로 리플렉션 시스템에 등록

BigCoinItem

  • 여기서 생성자를 통해 ItemTypePointValue를 설정

  • ActivateItem : 코인 아이템이 사용(획득)되었을 때의 동작

  • SmallCoinItem도 마찬가지로 해주면 됨

힐링아이템, 지뢰아이템

  • 이 두 아이템 역시 코인과 마찬가지로 BaseItem을 상속받은 자식클래스로 만들어준다

  • 각 아이템에 필요한 HealAmount / ExplosionDelay, ExplosionRadius, ExplosionDamage 등을 마찬가지로 리플렉션 시스템에 등록해주고 생성자에서 초기화해주면 된다

profile
반갑습니다

0개의 댓글