[이득우의 언리얼 C++ 게임 개발의 정석] Chapter 5. 폰의 제작과 조작

수민·2023년 3월 14일
0
post-thumbnail

이득우의 언리얼 C++ 게임 개발의 정석을 읽고 개인 공부 목적으로 요약 정리한 글입니다!

구매링크


👀 폰의 구성 요소

폰 : 플레이어가 조종할 수 있는 특수한 액터

인간형 폰을 제작하기 위해 고려할 요소

  • 시각적 요소 (애니메이션, SkeletalMesh Component)
  • 충돌 요소(Capsule Component)
  • 움직임 요소 (FloatingPawnMovement, CharacterMovement)
  • 내비게이션 (목적지까지 스스로 이동하는 길찾기 기능)
  • 카메라 출력 (폰에 부착하면 플레이어 컨트롤러가 플레이어 화면으로 전송)
  • SpringArm : 3인칭 시점으로 카메라 구도를 편리하게 설정해줄 수 있는 부가 컴포넌트

👀 폰의 조작

편집 > 프로젝트 세팅 > 입력
축 매핑 (Axis Mappings), 액션 매핑 (Action Mappings)을 직접 설정할 수 있다.

입력 설정 처리

폰의 SetupInputComponent() 함수에서 폰의 멤버함수와 입력 설정을 Binding.

void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

	PlayerInputComponent->BindAxis(TEXT("MoveForward"), this, &AMyPawn::MoveForward);
	PlayerInputComponent->BindAxis(TEXT("MoveRight"), this, &AMyPawn::MoveRight);
	PlayerInputComponent->BindAxis(TEXT("Turn"), this, &AMyPawn::Turn);
	PlayerInputComponent->BindAxis(TEXT("LookUp"), this, &AMyPawn::LookUp);
}

들어온 입력에 대한 움직임

폰 무브먼트 컴포넌트의 AddMovementInput() 함수에서 폰을 움직이게 함.

월드좌표계 기준으로 움직임의 방향을 설정해줘야 한다
월드좌표계 기준 액터의 Forward 방향 = GetActorForwardVector()

플레이어 컨트롤러에서의 조작?

만약 플레이어 컨트롤러에서 위에서 작성한 폰 조작을 실행한다면
플레이어 컨트롤러 선에서 움직임을 처리하고 폰까지 입력이 전달되지 않는다.
(입력은 플레이어 컨트롤러를 거쳐 폰에게 전달되기 때문)


👀 애니메이션

게임 실행 중 에셋 로드하는 명령어 : LoadObject<타입>

애니메이션 블루프린트

체계적으로 애니메이션 시스템을 설계하기 위한 별도의 애니메이션 시스템

애님 그래프 (AnimGraph)

: 애니메이션 설계

애님 인스턴스 (AnimInstance)

: 애님 그래프 로직에 따라 동작하는 캐릭터 애니메이션 시스템을 관리하는 클래스

SkeletalMesh Component는 애니메이션을 애님 인스턴스에 위임

애니메이션 관련 내용은 추후에 더 깊게 공부해보자잉!

profile
우하하

0개의 댓글