Unreal Engine 5 - Project Shooter (3): 점수 시스템

mingu Lee·2025년 8월 6일

1. 간단 요약


  • 시작 및 끝났을 때의 시간을 측정하는 기능과 Target을 KnockDown 시켰을 때 Score를 얻는 기능을 구현함.
  • 게임 플레이 시 플레이에 필요한 값을 표시해줄 Widget을 만듦.
  • 기본적인 기능 구현을 마치고, 프로젝트에 적용할 Asset을 다운로드 받아 Import 시킴.

2. 세부 과정


  1. 시간 측정
  2. 점수 시스템
  3. 게임 정보 Widget
  4. Asset 다운로드

2-1. 시간 측정


게임 진행 방식이 얼마나 빠르게 클리어하는지 측정하는 스피드런 형태의 게임이므로 시간이 얼마나 걸렸는지 측정할 수 있어야함.

GameMode에서 특정 구역에 도달 및 도착 시 시간을 측정하는 함수를 생성함.

아래는 시작 시각을 측정하는 StartGame 함수.

EndGame 함수에서는 StartGame 함수와 마찬가지로 끝나는 시각을 측정하고, 이 값을 바탕으로 걸린 시간을 계산함.

'GetMillisecondsFromDateTime'이라는 함수를 만들고, Input으로 들어온 두 DateTime 값을 비교하여 두 값의 차를 구함.

이 값을 1000으로 나누면 걸린 '초'를 구할 수 있음.

2-2. 점수 시스템


GameMode에 Score 변수를 추가하여 Target이 KnockDown 됐을 경우 Score 값을 증가시키는 기능을 추가함.

증가되는 값은 Target이 갖고 있으며, Instance Editable 값을 활성화하여 Level에 배치된 Target 마다 고유의 Score를 지정할 수 있음.

2-3. 게임 정보 Widget


현재 Character의 정보를 표현해줄 Widget을 만듦.

시간 측정, 현재 장비하고 있는 Weapon 타입, 발사 모드, 총알 수 등이 표시되도록 했다.

각 Text는 실제 Character와 Weapon이 갖고 있는 값을 매 프레임마다 참조하여 Update 해주고 있다.

2-4. Asset 다운로드


본격적으로 프로젝트를 꾸밀 Asset을 다운로드 받음.

Map, Weapon, Charcater, 환경요소 등 프로젝트에 필요한 Asset을 다운 받았음.

Modular Military Operation Urban Training Environment
https://www.fab.com/ko/listings/84f1e82f-75a7-4274-9078-d7918cce6e66

FPS Weapon Bundle
https://www.fab.com/ko/listings/8aeb9c48-b404-4dcd-9e56-1d0ecedba7f5

Quantum Modular Character Free Sample
https://www.fab.com/ko/listings/8e200050-3158-4762-b297-f785b5b1533d

Construction Site VOL. 1 - Supply and Material Props
https://www.fab.com/ko/listings/ba44a508-bfa5-444c-bbf4-69e8b5dee530

Lyra Starter Game
https://www.fab.com/ko/listings/93faede1-4434-47c0-85f1-bf27c0820ad0

Scanned 3D People Pack
https://www.fab.com/ko/listings/2e872a96-686e-4955-8256-82fa19904f92

M923 Truck (West)
https://www.fab.com/ko/listings/a29d90d3-486f-4b94-92fc-ec6431ad98e3

M1126 Stryker ICV (West)
https://www.fab.com/ko/listings/75d9a699-ff79-4e4f-a3bd-87e78f35271f

3. 구현 중 발생한 문제 및 해결방안


  • Weapon Swap에서 FireMode를 Full Auto로 설정한 뒤 발사하면서 다른 Weapon으로 Swap하면 기존 Weapon의 발사가 끊기지 않고 계속 실행되는 현상이 발생.
    Fire Release에서 Fire 함수 호출 예약을 취소했기 때문에, 발사 도중 Swap하면 Hand Weapon의 정보가 변경되어 기존 Weapon의 Release가 호출되지 않기 때문에 발생하는 것이었음.
    이를 방지하기 위해 총을 발사 중이면 Swap이 안 되도록 조건문을 추가함.
    Mouse Left Button이 Pressed가 아니거나, Fire 함수의 Timer Handle이 비활성화 되어있을 때만 Swap이 가능하도록 변경.

4. 오늘의 결과물


오른쪽 하단에 현재 Weapon의 정보와 Trigger Volume에 충돌 시 시간이 잘 측정되는 것을 볼 수 있다.

점수는 나중에 따로 추가할 예정이다.

profile
Github: https://github.com/dlalsrn

0개의 댓글