본문 바로가기

프로그래밍/Unreal

[UE4] 언리얼 기본 예제 분석

ThirdPerson 템플릿



메쉬 : 다른 메쉬 오브젝트를 import 시키는것과 같이 아래 오브젝트들이 생성됨.

SK_Mannequin

SK_Mannequin_PhysicsAsset

UE4_Mannequin_Skeleton


애니메이션 : FBX import시 애니메이션 별로 추가



입력구성

Axis Mappings : 기본적인 입력구성, 게임패드, 모션 컨트롤러 포함

Action Mappings : 점프, ResetVR (R키)




머터리얼 (템플릿의 경우 머터리얼 함수로 구성됨)


캐릭터에 필요한 머터리얼 적용

머터리얼 애셋 생성

기본적인 메터리얼을 설정


기본색상(베이스 컬러) : Vector Parameter


Fresnel : 반사 설정


Linear Interpolator(Lerp)



머터리얼 애셋 인스턴스 생성

Parent 머터리얼의 복사본으로 부모에 추가된 설정등을 그대로 가져와 변경이 가능하다.



마네킨을 눌러 메터리얼 적용



블렌드 스페이스

여러개의 애니메이션을 자연스럽게 이어준다.

범위값이 하나만 필요한 경우 블렌드 스페이스 1D를 사용


기본 X축(Speed) 범위 : 0-375, X축 디비전 : 4

idle, walk, run 이 속도에 따라 자연스럽게 변화한다.



2개 축을 사용하여, Speed, Direction 등 여러값에 따라 애니메이션 설정 가능.




애니메이션 블루프린트

AnimInstance 를 부모로 하는 블루프린트 생성 

스켈레톤 애셋에 해당하는 에니메이션들 관련 처리를 추가 할 수 있다. 

특정 애니메이션 이벤트를 받는 다던가 상태 값 추가해 그 값에 따라 에니메이션을 변경하는 등 처리를 할 수 있다.



 

애님 그래프

- 애님 그래프에서 오른쪽 버튼을 클릭해 스테이트 머신 새로 추가

해당 상태머신을 더블클릭


- Entry에 기본 포즈 추가 - Idle_Walk_Run 으로 블레드 스페이스에서 만든 에니메이션을 적용

애셋 브라우저에서 블렌드 스페이스에서 만든 에니메이션 끌어 놓는다.

해당 블렌드스페이스는 Speed 값을 사용하므로, 해당 핀을 변수로 승격.

변수는 이벤트 그래프에서 업데이트 하게 됨.


- idle_walk_run에서 점프 시작 state 추가


- 두 상태 사이의 변환 아이콘을 더블클릭하고, bool 값을 받기 위해 변수로 승격


- 점프 중 상태 추가

변환룰은 기존 애니메이션의 남은 시간으로 설정 : Time Remaining (Ratio)(점프시작) 선택

float<float

남은 애니메이션 비율 선택 : 0.1은 10%


- 점프 완료 상태 추가

변환룰은 IsInAir 변수값의 not 으로 설정


- idle 상태로 전환 추가

점프 완료 애니메이션이 완료 되었는지로 변환룰 적용(time remaining(ratio)(점프중)


이벤트 그래프

Blueprint Update Animation 이벤트

Try Get Pawn Owner



owner->Get MovementComponent->is falling->is in air 에 설정

owner->Get Velocity->vector length->Speed 에 설정









캐릭터 블루프린트

Character 를 상속받는 블루프린트 생성 : Character는 Character Movement 컴포넌트가 포함됨


캐릭터는 아래와 같은 컴포넌트 들로 구성된다.

ThirdPersonCharacter

Capsule Component

Arrow Component

Mesh


SpringArm Component

Camera Component


Character Movement




Mesh

Skeletal Mesh

Animation Mode : Use Animation Blueprint

Anim Class : 작성한 애니메이션 블루프린트 설정



Character Movement 설정

질량, 걷기 속도 등 캐릭터 이동에 관련한 설정






이벤트 그래프

Move Forward->Add Movement Input

Get Control Rotation : 회전 방향에 따라 Get Forward Vector, Get Right Vector 등 생성



관련 함수

Add Movement Input : 이동

Add Controller Yaw Input : 회전

Add Controller Pitch Input : 회전

Jump

Stop Jumping




애니메이션 몽타주







AIController

TransformComponent

PathFollowingComponent

ActionComp


AIController 상속받은 블루프린트 클래스 생성

캐릭터 블루프린트의 Pawn 설정에서 컨트롤러 클래스 지정




특정 방향으로 이동 : 플레이어를 향해 이동하는 경우

이동관련해 AI-Navigation 하위에 몇가지 함수 제공.

Move To Actor

Move To Location



AI Move To : Move To Actor 와 같은 동작

Pawn : Get Controlled Pawn

Target Actor : Get Player Character

Acceptance Radius : 범위


AIController가 동작하기 위해서는 Nav Mesh Bounds Volume 이 설정되어 있어야 한다.



Path를 따라 이동




PawnSensing Component

특정 각도의 영역에 Pawn객체가 들어오면 OnSeePawn 이벤트 발생.

Path를 따라 이동하다가 플레이어가 감지되면 공격 모드로 전환 등에 사용.






무기 + 발사체


무기는 Actor를 상속받아 구현

Skeletal mesh 추가

Arrow 컴포넌트로 방향 지정


커스텀 이벤트 생성해 발생체 생성,발사


Spawn Actor from Class 로 발사체 생성

Spawn Transform 은 무기의 Arrow 컴포넌트에서 GetWorldTransform 을 사용해 구한다.





발사체

Projectile Movement

Projectile

Initial Speed : 초당 cm

Projectile Gravity Scale 






차량(Vehicle)


타이어 설정 : 마찰제어

데이터에셋 - TireConfig 추가

Friction Scale 조정


 

휠 설정 : 휠 반경, 질량, 효과 등 설정

블루프린트 - VehicleWheel 상속받은 클래스 추가

프론트휠, 리어휠 별도로 생성



Shape Radius : 세이프 반경

Shape Width : 세이프 폭

Mass : 질량

Damping Rate : 감속율

Steer Angle : 스티어링 각도(앞바퀴)



차량 전용 애니메이션

애니메이션 블루프린트 생성 : VehicleAnimInstance 상속, 스켈레탈 메쉬 지정


Mesh Space Ref Pos(메시 스페이스의 레퍼런스 포즈

Wheel Handler for WheeledVehicle

Component To Local(컴포넌트에서 로컬로)


별도 조인트등 처리를 위해서는 해당 본에 대해 Look At 노드로 구성.



WheeledVehicle

Pawn의 서브 클래스인 WheeledVehicle 을 상속받는 블루 프린트 생성

Mesh 해당 Skeletal Mesh 지정, 애니메이션 지정


카메라 컴포넌트 추가 - 폰 컨트롤 회전 사용(Use Pawn Control Rotation) 끄기


VehicleMovement 설정

Vehicle Setup-Wheel Setups

해당 휠 클래스 설정

본 이름은 휠이 제어할 조인트 이름



바인딩된 입력에 따라 처리 추가 : VehicleMovement에서 제공하는 함수를 호출해 이동을 처리한다.


Forward -> Set Throttle Input

Right -> Set Steering Input

Handbrake -> Set Handbrake Input








'프로그래밍 > Unreal' 카테고리의 다른 글

[UE4] 폰트  (0) 2017.09.26
[UE4] C++ 에셋, 오브젝트 레퍼런싱/객체생성  (1) 2017.09.25
[UE4] CSV 파일  (0) 2017.09.24
[UE4] unreal delegate  (0) 2017.09.24
[UE4] 마우스 입력  (0) 2017.09.17
[UE4] 아웃라인 : 스텐실  (0) 2017.09.16
[UE4] 메쉬 외곽선 효과  (0) 2017.09.15
[UE4] Line Trace  (0) 2017.09.12
[UE4] 액터  (0) 2017.09.12
[UE4] C++ 기본 사항 노트  (0) 2017.09.06