[UE] Unreal Engine Basic

GamzaTori·2024년 4월 1일
0

UE4 Blueprint C++

목록 보기
6/19

언리얼 엔진 기초

C++로 Actor 만들기


StaticMesh 추가하기

  • CreateDefaultSubobject를 통해 생성자에서 mesh를 초기화하고 있다
  • VisibleAnywhere를 통해서 엔진 내에서도 속성이 보이게 할 수 있다

ConstructorHelpers::FObjectFinder를 통해 StaticMesh 가져오기

  • TEXT 안에 불러올 StaticMesh의 경로를 입력해야한다

StaticMesh가 성공적으로 불러왔는지 확인하기

  • 성공적으로 불러와졌다면 SetStaticMesh를 통해 불러온 Mesh로 설정해준다

추가하는 컴포넌트 중 하나를 RootComponent로 만들어주어야 한다

멤버 변수 추가하기

EditAnyWhere 옵션을 통해 에디터에서도 수정할 수 있다

  • Category를 설정할 수도 있다

로그와 디버깅

로그를 생성하는 UE_LOG()

  • string format 형식으로도 출력할 수 있다

솔루션을 DebugGame Editor 혹은 Development Editor로 설정해야 Editor 위에서 실행되는 dll 파일을 만들어준다

  • Editor가 없는 솔루션은 exe 파일만 만들어주기 때문에 Resource를 찾지 못해 에러가 발생한다

회전을 추가하는 AddActorLocalRotation

  • 매 틱마다 Y축(Pitch)를 기준으로 회전한다
  • 로컬좌표와 월드좌표를 기준으로 회전하는 LocalRotation과 WorldRotation이 존재한다

게임플레이 프레임워크

GameMode를 직접 만들어 override하여 사용할 수 있다

GameMode, Pawn class를 생성후 Pawn의 Mesh를 초기화

GameMode의 DefaultPawnClass를 방금 만들어준 Pawn class로 지정

  • Static Class를 통해 클래스 정보를 가져와 지정할 수 있다

플레이어의 입력 컴포넌트를 결정하는 SetupPlayerInputComponent

  • BindAxis를 통해 상하좌우 움직임에 대한 함수를 바인딩 할 수 있다
  • 바인딩시 TEXT의 문구와 매핑을 맞추어야한다

입력이 없을 땐 바로 Return 해주는 것이 좋다

간단한 이동 컴포넌트 UFloatingPawnMovement 추가

  • UFloatingPawnMovement는 기본적으로 헤더파일에 포함되어 있지 않기 때문에 헤더파일에서 전방선언 해주는것이 좋다
  • 이후 cpp에서 GameFramework/FloatingPawnMovement 헤더파일을 포함해준다

앞뒤로 이동하는 함수 AddMovementInput()

  • 앞뒤로 움직이기 위해 GetActorForwardVector()를 인자로 전달
  • 좌우로 움직이기 위해 GetActorRightVector()를 인자로 전달
  • Value 값에 따라 음수면 반대 방향으로 움직인다

캐릭터 생성

마켓플레이스에서 Paragon Graystone 에셋 추가

Character 클래스를 생성

  • SkeletalMesh: 애니메이션을 입힐 수 있는 뼈대 구조의 메시
  • CharacterMovement: 캐릭터의 움직임을 담당
  • Capsule: 충돌 범위를 나타내는 것을 담당
  • Arrow: 화살표로 방향을 표시한다

상속받은 ACharacter의 생성자에서 위의 컴포넌트를 모두 초기화하고 있다

생성자에서 캐릭터의 SkeletalMesh 초기화

GameMode에서 만들어준 캐릭터의 헤더를 포함시키고 DefaultPawnClass를 위에서 만든 캐릭터로 지정

캐릭터에 SpringArm, Camera 컴포넌트 추가

생성자에서 SpringArm, Camera 초기화

  • SetupAttachment를 통해 SpringArm을 RootComponent, Camera를 SpringArm에 붙이고 있다
  • SpringArm의 TargetArmLength를 통해 길이와 SetRelativeRotation으로 각도를 조정한다

마우스로 회전을 구현하기 위해 Yaw회전의 축 매핑 마우스 X를 추가

마우스 움직임을 위한 Yaw 함수

해당 과정은 캐릭터가 아닌 Controller에 YawInput을 추가한 것

  • Rotation Yaw 옵션이 켜져있기 때문에 동작한다
profile
게임 개발 공부중입니다.

0개의 댓글