애니메이션 기초

Skeletal Mesh의 Animation 속성을 활용한다.

ㄴ 애니메이션 블루프린트 클래스와 연결한다.

애니메이션 인스턴스를 활용할 때는 애니메이션 블루프린트라는 별도의 창에서 만들어야 한다.

캐릭터에 애니메이션 관련 코드를 넣는게 아니라 애니메이션 인스턴스에서 캐릭터의 상태를 읽어서 동작을 지정하는 방식을 쓰자

스테이트 머신

애니메이션 상태 관리는 웬만하면 블루프린트를 사용한다.

 

애니메이션 몽타주

애니메이션을 편집해서 또 다른 애니메이션을 만드는 기법

ㄴ 여러가지 애니메이션을 연결하여 하나의 긴 애니메이션을 만들 수 있다.

ㄴ 여러 개의 애니메이션을 섹션으로 구분하여 호출하고 싶은 섹션의 애니메이션을 재생할 수 있다.

스켈레탈 메시 -> 에셋 생성 -> 애님 몽타주

 

델리게이트

어떤 행동이 끝났을때 어떤 기능을 호출하고 싶을 때 사용함

 

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnMontageEndedMCDelegate, UAnimMontage*, Montage, bool, bInterrupted); // Unreal의 델리게이트 선언 (Montage가 끝날 때 등록된 함수를 호출하는 델리게이트)

...

FOnMontageEndedMCDelegate OnMontageEnded; 

 

void AMyCharacter::BeginPlay()
{
Super::BeginPlay();

AnimInstance = Cast<UMyAnimInstance>(GetMesh()->GetAnimInstance());
AnimInstance->OnMontageEnded.AddDynamic(this, &AMyCharacter::OnAttackMontageEnded);

}

ㄴ 애니메이션 몽타주가 끝날때 호출될 함수(OnAttackMonrageEnded)를 추가한다.

 

애니메이션 노티파이

애니메이션 클립 중간에 노티파이를 설정하여 애니메이션 중 원하는 타이밍에 함수를 호출할 수 있도록 한다.

ㄴ AnimatorInstance 클래스에 AnimNotify_[노티파이 이름]() 의 함수를 정의하면 된다.

ㄴ Montage_JumpToSection 함수를 활용하면 노티파이 이름

 

블렌드 스페이스

가중치에 따라 애니메이션을 섞는다.

ㄴ 캐릭터의 걷기 애니메이션 (상하좌우)를 섞어 블렌드 스페이스를 만들면 플레이어의 움직임을 자연스럽게 만들 수 있다.

'언리얼 5 > 정리' 카테고리의 다른 글

라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14
충돌과 UI  (0) 2022.09.14
Unreal의 기초  (0) 2022.09.12

Unreal 엔진의 기초

Unreal은 월드 안의 요소(게임 객체)들의 유형이 정해져 있다.

Unity는 컴포넌트를 조립하여 요소의 유형을 결정한다.

 

Unreal은 C++ 게임 객체를 만들 때 부모 클래스의 종류를 정해주며 시작한다. (만들 때 부모 클래스를 지정한다.) 

Unity는 아무것도 없는 객체에 컴포넌트를 붙이는 방식이라면 Unreal은 종류가 정해진 객체에 컴포넌트를 붙이는 방식

이런 관점에서는 Unity가 Unreal보다 자유도가 더 높다.

 

Object (Unreal 게임 객체의 최상위 클래스)

ㄴ Actor

    ㄴ Pawn

        ㄴ Character

 

Actor 클래스 (AActor를 상속받음)

ㄴ BeginPlay() : 스폰될 때 한 번 실행되는 함수

ㄴ Tick() : 매 프레임 호출되는 함수

 

Unreal 특징

ㄴ C++ 클래스를 삭제하려면 엔진을 끄고 파일 탐색기에서 삭제해야 한다.

ㄴ 컴포넌트들을 스마트포인터 멤버로 관리한다.

ㄴ 컴포넌트를 추가할 때 컴포넌트들 중 하나는 루트 컴포넌트여야 한다.

ㄴ 빌드는 Visual Studio에서 해도 되고 엔진의 컴파일 버튼을 눌러도 된다.

ㄴ 유니티와 비슷하게 멤버를 private으로 관리하고 리플렉션 기능을 활용하여 엔진에서 수정할 수 있다.

ex) UPROPERTY(VisibleAnywhere) UPROPERTY(EditAnywhere, Category=BattleStat)

 

로그와 디버깅

로그

UE_LOG(카테고리, 로그 수준, 형식, 인자)

UE_LOG(LogTemp, Warning, TEXT("hello %d"), 3);

카테고리별로 로그를 볼 수 있다.

 

디버깅

엔진 끄고 솔루션 구성 Development editor나 debuggame editor로 설정 후 디버깅 시작하면 엔진이 켜짐

엔진의 플레이 버튼 누르면 중단점에 걸림

 

솔루션 구성의 Debug와 Development는 debug와 release의 관계와 비슷하다.

editor와 editor가 안붙은 것의 차이 

ㄴ editor 붙은 건 dll을 만들고 안 붙은건 exe를 만든다.

 

게임플레이 프레임워크

GameModeBase 클래스

ㄴ 게임의 규칙을 정의하는 클래스

월드 세팅

 

ctrl + n 단축키로 map을 생성할 수 있다.

ㄴ 세팅 -> 프로젝트 세팅 -> 맵&모드 -> 기본 맵 세팅

 

Pawn 클래스 (입력을 받을 수 있는 객체)

축과 액션에 대한 정보 세팅

ㄴ 세팅 -> 프로젝트 세팅 -> 엔진-입력 -> 축 매핑 이름 맞춰주기

 

Character 클래스

카메라가 캐릭터를 3인칭 시점으로 보이게 하기

ㄴ SpringArm은 CapsuleComponent에 붙인다.

ㄴ Camera는 SpringArm에 붙인다.

 

BluePrint

C++만을 사용하여 게임을 만들 수도 있지만 C++와 BluePrint를 적절히 섞어 사용하여 게임을 만들 수도 있다.

컴포넌트를 붙이거나 규칙을 정하는 과정을 시각화하여 표현한 것이다.

블루프린트 클래스가 C++ 클래스에 비해 느리긴 해도 유용하게 사용될 수 있다. 외형을 둘러볼 수도 있고 속성을 에디터에서 변경하여 적용해 볼 수도 있다.

기존에 만들어져 있는 C++ 클래스를 상속받는 블루프린트 클래스를 만들 수도 있다. 

 

'언리얼 5 > 정리' 카테고리의 다른 글

라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14
충돌과 UI  (0) 2022.09.14
애니메이션  (0) 2022.09.13

+ Recent posts