[Unreal] 33일차 - 점수 표시 UI, 점수 데이터 저장, 플레이어 상체 움직임

2024. 9. 15. 18:52Unreal Engine

728x90
반응형

점수 표시 UI

WBP_UIScreen에서, Vertical Box를 추가해서 ScoreBox 이름으로 변경

 

 

그 아래 Text를 두 개 추가하여 CurrentScore, HighScore로 이름 변경

 

 

ScoreBox는 Anchors를 우측 상단으로, 포지션과 Alignment를 설정한다.

 

 

Text를 "Current Score : 999"로 설정했고 Justification을 우측으로 두었다.

 

 

High Score도 마찬가지로 설정

 

 

ScoreBox에 Size To Content 체크하고 Position 살짝 변경

 

 

실행 시 화면에서 스코어가 잘 보인다.

 

 

BluePrints 폴더에 BP_TPSGameMode 블루프린트를 더블클릭한다.

 

 

좌측에서 CurrentScore, HighScore 변수를 생성한다.

 

 

BP_Player의 EventGraph에서 BeginPlay 부분에 WBP_UIScreen을 불러오는 부분을 BP_TPSGameMode로 옮길 것이다.

해당 부분 복사

 

 

복사해서 BP_TPSGameMode에 가져온 후 UIScreen 부분 Promote to Variable

 

 

BP_Player 부분은 아래와 같이 수정했다.

 

 

다시 BP_TPSGameMode로 돌아와서 함수를 하나 만든다.

 

 

Input 추가

 

 

함수는 아래와 같이 설정했다. 현재 점수가 계속 더해지도록.

 

 

UpdateHighScore 함수 생성

 

 

UpdateHighScore 함수는 아래와 같이 설정한다. 현재 점수가 하이스코어 보다 크다면 하이스코어에 넣는다.

 

 

적이 죽을 때 점수가 올라가기 때문에 BP_EnemyFSM으로 간다.

OnDamageProcess 함수에서 죽을 때 점수를 올리면 된다.

Die Animation 나오는 뒷 부분에 게임모드 가져와서 현재 점수 추가 함수를 이었다.

 

 

AddCurrentScore를 더블클릭해서 뒤에 UpdateHighScore 함수를 붙였다.

 

 

다시 WBP_UIScreen으로 돌아와서 CurrentScore 선택 후 Create Binding

 

 

마찬가지로 게임모드 가져와서 현재 점수를 String으로 보여지게 설정한다.

 

 

마찬가지로 HighScore도 Create Binding

 

 

HighScore도 마찬가지로 Current Score에 썼던 노드 복사해서 텍스트를 "High Score : "로 변경하고 High Score 변수를 Get 하도록 바꿨다.

 

 

적을 잡으면 점수가 올라가는 것을 확인했다.

 

 


 

 

점수 데이터 저장

Blueprint 폴더에서 SaveGame 클래스 블루프린트 생성

 

 

더블클릭해서 들어간 후 변수 생성

 

 

BP_TPSGameMode로 가서 UpdateHighScore 함수를 수정한다.

Create Save Game Object, Save Game to Slot 노드로 데이터를 저장한다.

 

 

BP_TPSGameMode의 EventGraph로 돌아가서 블루프린트를 이어나간다.

Does Save Game Exist로 데이터가 있는지를 확인하고 있다면 HighScore 이름의 슬롯 데이터를 가져온다.

 

 

죽어서 Ecs 누르고 나갔다가 다시 들어와도 High Score의 점수가 남아있는 것을 볼 수 있다.

 

 


 

 

플레이어 상체 움직이기

Animations 폴더 안에 ABP_Player를 연다.

Transform (Modify) Bone 노드를 추가했다.

 

 

만든 노드의 Details에서 Bone to Modify를 spine_03으로 설정

 

 

Rotation Mode는 Add to Existing으로 변경

 

 

X 회전 값을 조절하면서 허리를 숙이고 펼 수 있게 하면 된다.

 

 

AimAngle 이름의 float 형 변수 만들어서 연결했다.

 

 

ABP_Player의 EventGraph로 간다.

BP_Player를 뒤에서도 쓸 예정이므로 Promote to Variable 한다.

 

 

뒤에 블루프린트를 아래와 같이 연결했다. 플레이어의 Pitch 회전이 위아래 회전이며 Clamp를 이용해서 최소, 최대 회전을 제한했다. 반대로 회전하기 때문에 -1을 곱했다.

 

 

조준점을 움직일 때 플레이어의 허리가 숙여지고 펴지는 것을 볼 수 있다.

728x90
반응형