기본 콘텐츠로 건너뛰기

250325 게임모드, 플레이어 캐릭터, 애니메이션 흐름

에디터 부하 낮추기

에디터 우상단 Settings - Engine Scalability Settings 설정값 낮추기


Project Settings - Platforms - Windows - Default RHI
구형 컴퓨터는 DirectX 12말고 아래 단계를 쓰는 게 더 좋을 수 있다.

Print를 찍어보면서 확인하기.


블루 프린트에 대한 컴파일- 블루 프린트만 바뀐다.
클래스 - 함수를 만들 수 있음.

GameMode
게임의 설정 캐릭터, 게임의 방식

Default Pawn Class를 블루 프린트에서 바꾸면 World Settings에서도 바뀐다는 점에 주의.

Character
Arrow Component : 캐릭터의 정면 방향을 표시
Mesh : 캐릭터의 몸체

Input (구)
경로(Path, Skeleton, Physics Asset)를 확인하자
F8 : 플레이어 빙의 / 탈출

Input값 확인



이동
Target self : self의 경우 나 자신을 의미함.


카메라
위치
Spring Arm : 직접 카메라를 바꾸지 않고 간접적인 방식으로 조정하기 위해 사용.
Spring Arm을 이용해 위치를 결정한다. 특히, 생성시에 Mesh를 클릭한 채로 생성을 해야, 플레이어의 위치를 제대로 받을 수 있다. 카메라 또한 SpringArm 아래에 생성해야 한다.
카메라를 직접 이동 시킬 경우에 확대, 축소 및 다양한 카메라 액션 시의 문제가 생길 수 있다.
TPS의 경우에는 캐릭터의 뒤에 배치를 하고, FPS의 경우에는 캐릭터의 앞에 배치를 한다.

Socket Offset : 충돌 영향 X
Target Offset : 충돌 영향 O

회전
Pitch 피치볼 할래 끄덕
Yaw 야 공부할래 도리도리
Roll LOL티어가 .. 갸우뚱

캐릭터의 상하이므로 Pitch
캐릭터의 좌우이므로 Yaw

플레이어의 몸체를 움직여야 할 때 좌우 회전 시만 움직여야 하므로, 이를 위해 Use Controller Rotation Yaw만 체크한다.

Pitch 즉 상하의 시점 이동을 위해서는 카메라를 움직여야 한다. 따라서
Spring Arm의 Use Pawn Control Rotation을 체크해줘야 한다.


플레이어의 블루 프린트에서
LookUP 이벤트와 LookRight 이벤트를 생성한다.
InputAxis 를 통해 마우스 이동, Mouse Speed는 감도, Get World Delta Seconds로 프레임당 속도를 
Get World Delta Seconds



향상된 입력
plugin - enhanced input
project settings - Default Classes 확인

Input Mapping Context
기존 입력 설정을 대안하여 만들어진 입력 할당.
Swizzle Input Axis Values : 입력값의 순서 변경
Negate : 모든 입력값에 * -1
IA_Move를 이벤트로 가져오면, Triggered는 매 틱 마다 검증하는 이벤트로서 여기에 입력을 주면 된다.
Get Actor Right Vector : 액터의 Y벡터 값을 가져옴.
Get Actor Forward Vector : 액터의 X벡터 값을 가져옴.


Get World Delta Seconds




애니메이션 블루프린트
Animation Sequence와 Loop를 이용하면 지속적으로 애니메이션을 보여 줄 수 있지만, 같은 애니메이션만 가능합니다.

캐릭터가 멈추고 이동하는 것과 같은 변화를 주기 위해서 State Machine을 이용합니다.
먼저 캐릭터가 가만히 있는 모습을 보여주기 위해서 Idle 애니메이션 하나를 가져오고 Entry에 Idle을 연결합니다.

이후 우리가 원하는 것은, 속도와 방향에 따라 이동하는 모습이 바뀌도록 하는 것을 원하므로 Blend Space를 이용합니다. 
1. Angle은 플레이어가 왼쪽, 정면, 오른쪽과 같은 방향 360도의 방향이므로 값에 -180 ~180을 넣습니다.
2. Speed는 플레이어가 어느정도 속도로 움직이는가에 따라 애니메이션 재생 속도를 맞추는 방식으로 0~100의 값을 갖습니다.

하단의 그리드에 점을 추가하고 싶다면, Asset Browser에서 애니메이션 시퀀스를 끌어 넣습니다. 자세한 값은 좌측에 존재하는 Asset Details - Blend Samples에서 확인 해서 값을 넣어줄 수 있습니다.

하단의 그리드를 통해 애니메이션의 모습을 보고 싶다면 Ctrl 마우스 이동을 통해 확인 할 수 있습니다.

만든 Blend Space를 Locomotion 상태 머신에서 가져와서 Idle로부터 화살표를 Movement로 또 반대 방향으로도 보냅니다.

플레이어가 움직일 때는 Speed의 값이 들어와 0보다 클 경우이고, 반대로 멈출 경우는 Speed의 값이 0인 상황이 됩니다. 이를 위해 Movement의 Speed 값을 이용합니다.

Idle로부터 Movement의 화살표를 보내면 양방향 화살표 모양이 나오는데, 이를 클릭하면 이에 대한 조건을 줄 수 있습니다. 앞서 말한 대로, Speed의 값이 0보다 클 경우, 'Can Enter Transition'한다로 조건을 하나 만들고,
반대로 Movement에서 Idle로 갈 경우 그와 반대 상황이므로 Not을 활용 합니다.




Event Graph에서 애니메이션은 대상이 되는 캐릭터에 대해 알지 못하므로, Cast를 통해서 그 대상 블루 프린트를 가져와 줍니다.

플레이어의 Velocity는 벡터 값이고 우리가 원하는 것은 속도이므로 Vector Length를 이용해 값을 변환하여 Speed의 값에 넣습니다.

Get Actor Rotation을 통해 Actor의 회전값을 가져오고, Calculate Direction은 플레이어의 회전 값과 벡터로부터 Forward Vector의 값을 산출해 주므로, 이를 이용해서 Angle에 플레이어가 왼쪽 또는 오른쪽의 벡터 값을 받고 있는지 받을 수 있습니다.


💀 참고
Enhanced Input
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/enhanced-input-in-unreal-engine?application_version=5.0
애니메이션 블루프린트
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/animation-blueprints-in-unreal-engine?application_version=5.0
애니메이션 블루프린트 에디터
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/animation-blueprint-editor-in-unreal-engine?application_version=5.0
스테이트 머신
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/state-machines-in-unreal-engine?application_version=5.3
블렌드 스페이스
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/blend-spaces-in-unreal-engine?application_version=5.4

이 블로그의 인기 게시물

250523 PCG 2

PCG Building Volume Sampler를 사용할 경우 Voxel Size를 맞추어주자. 2m길이를 Transform Points로 Offset을 이동시켜 Difference를 통해 메쉬를 생성한다. 사용시에 Pivot의 위치가 중앙이 아니면 제대로 표현되지 않을 것이다. PCG Landscape Landscape 생성후 PCG Volume 생성. Get Landscape Data - Surface Sampler 안보인다면 Generate Surface Sampler 일반 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다. 이 노드에는 다음과 같은 옵션이 있습니다. 포인트 규모(Point Extents) : 서피스의 기본 그리드 셀 크기를 정의합니다. 여유(Looseness) : 변형 가능한 셀 크기를 정의합니다. 실제로 셀 크기는 포인트 규모 * (1 + 여유)입니다. 제곱미터당 포인트(Points Per Square Meter) : 유지되는 셀의 비율을 계산합니다. 이 프로퍼티는 그리드가 클 때 과잉을 제한합니다. Looseness : 기본 1. 0일경우 Extent의 길이 만큼, 1일경우 2배가 됨.  Attribute Filter를 생성하고, Material에 해당하는 Layer를 찾아서 이름을 넣어준다. Type을 Float로 하고 Float Value를 설정하면, 해당 머티리얼이 색칠된 정도 0~1에서 Operator에 의해 >(초과) 0.6초과 일 경우만 생성되게 할 수 있다. 값을 1로 하고 Equal을 이용해서 1인 경우만 생성되게 하는 것도 가능하다. plugin Water body lake를 넣으면, 이또한 Spline이라는 것을 알 수 있다. 따라서 Get Spline Data-Spline Sampler를 통해 사용할 수 있다. GetActorData와 Difference를 통해서 Lake내부를 제거해주기 PCG Mesh Mesh Sampler를 쓰기위해 Get Actor Property를 이용하면, 해당 액터가 ...

250604 저장불러오기

SaveGame 블루프린트 생성 Game Instance 생성, Init 오버라이드 AC_Inventory Save Load

250522 Physics2, PCG

Radial Force Actor Force 값을 많이 주어야함. Balloon Mass값과 PhysicsThrust를 이용하거나, Set Physics Linear Velocity를 이용하여 Z축 값을 줄 수 있다. Skeletal Physics Physics Material Friction : 마찰력. 수치가 클수록. 덜 미끄러워짐 Restritution : 복원력. 탄성계수 수치가 높을 수록 bouncy Fracture voronoi : Cluster의 숫자 Show Bone Color 해제해주기 Damage Damage Threshold의 값을 수정하는 것으로 강도 조절 가능. Chaos Cache Actor에서 Chaos Cache Manager를 생성 가능. Record 기능이 존재한다. 일단 생성하면 Chaos Cache Collection을 저장하여 사용할 수 있게된다. Cachos Cache Manager를 Simulate를 누르면 저장되고, 실행을 종료하면 그동안의 변화상황이 저장된다. 저장된 Collection을 가져와서 Sequencer의 StartTime으로 가져와 재생할 수 있다. PCG plugin Spline생성후 포인트 하나 지워 줌 우클릭으로 Spline Generation Panel, Square 생성. 처음 지점 포인트 겹쳐있을 수 있으므로 찾아서 삭제해주기 Get Spline Data => Spline Sampler D키 또는 Debug에 체크를 해주고, Dimension 설정을 해준다. On Interior의 경우, Unbounded에 체크를 하면 내부에도 생기게 된다. Static Mesh Spawner Intersection : 교차점 이 부분은 tag가 Spline과 Overlap되어 닿으면 바꾸어 준다. Difference를 이용해 그외 부분은 채워 넣는다. 길 By Class로 설정해주기 On Spline - Distance Extent Radius 설정해주기 Difference를 통해 제외하기 PCG는 A...