HW08 플랫폼 게임

김세희·2025년 7월 22일
post-thumbnail

HW08 플랫폼 게임

  • 회전, 이동하는 플랫폼과 장애물을 피해 모든 🍬을 모아 종료 지점까지 도달하는 게임
  • HW06에서 발전시킨 게임이다.

📜게임 규칙

  • 플레이어의 목숨은 3개 ❤️❤️❤️
  • 플레이어가 떨어져 목숨을 잃게 되면 이전 위치로 리스폰된다.
  • 해당 레벨의 모든 사탕을 모으지 못하면 종료 지점에 도달해도 레벨을 끝낼 수 없다.

🎬플레이 영상

추후 찍은 영상으로 교체 예정
YouTube

📌추가 구현 기능

1. 레벨별 랜덤 스폰되는 아이템

  • 💊힐링 포션: 먹으면 목숨 +1, 최대 목숨에 도달하면 더이상 채워지지 않는다.
  • 😫섬광탄: 닿으면 2초동안 시야가 하얘진다.
  • 🎯유도탄: 범위 안에 들어가면 그 위치로 3초동안 따라온다. 그 안에 맞으면 터지며 목숨을 하나 잃고 범위에서 벗어나면 사라진다.

2. 레벨별 스폰 맵 모듈 추가

  • 레벨별로 맵이 스폰될 그리드가 커지며 스폰되는 맵 모듈도 둘 중 하나가 무작위로 선택된다.

MapModule
3. 추가 레벨

  • 3 레벨까지 추가
  • Level 1: 사탕 모으기 + 힐링 포션
  • Level 2: 사탕 모으기 + 힐링 포션 + 섬광탄
  • Level 3: 사탕 모으기 + 힐링 포션 + 섬광탄 + 유도탄

4. 리스폰 로직 수정

  • 2초마다 이동/회전 플랫폼이 아닌곳에 서있는 경우 리스폰 지점 갱신

5. UI

  • 메인 메뉴에 Quit 버튼 추가
  • 레벨 사이 시작 화면 추가
  • HUD 추가

6. 사운드

  • 아이템 사운드
  • 레벨 별 배경음악
  • 걷는 소리

🎯트러블 슈팅

공중 리스폰

문제 : 이동 플랫폼 위에서 리스폰 지점이 저장되고 2초 안에 죽었을 때 해당 위치로 리스폰되어 계속 낙사를 했다.
해결 : 현재 플레이어가 서있는 플랫폼의 클래스를 확인하여 이동/회전 플랫폼이라면 리스폰 위치를 갱신하지 않았다.

리스폰 위치 초기화

문제 : 게임 시작하자마자 플레이어가 죽었을 때 (0, 0, 0)에서 리스폰
해결 : GameMode 에서 2초마다 리스폰 지점을 갱신하는 로직이었는데 캐릭터가 스폰되는 시점에 리스폰 지점을 초기화 하려고보니 GameMode에서 이것을 확인하기가 비효율적이라고 생각해 해당 로직을 캐릭터 클래스로 옮겼다.
캐릭터가 스폰되는 시점에 BeginPlay()에서 스폰 위치로 초기화하고 타이머를 통해 2초마다 갱신하도록 했다. 그리고 플레이어가 죽었을 때 GameMode에서 리스폰이 필요한지 확인하여 리스폰 위치 값을 Getter로 가져오게 수정했다.

void AHW06_Character::UpdateRespawnTransform()
{
	FHitResult FloorHit = GetCharacterMovement()->CurrentFloor.HitResult;
	AActor* FloorActor = FloorHit.GetActor();
	
	if (FloorActor &&
    	!FloorActor->IsA(AMovingObstacleBase::StaticClass()) &&
    	!FloorActor->IsA(ARotatingObstacleBase::StaticClass()))
	{
		RespawnTransform=GetActorTransform();
	}  
}

💀사용 에셋

맵:
Cropout Smaple Project

캐릭터: Cemetery - Mummy - Undead Character | Free Gift December 2024

사탕 아이템: Cute Candy

장애물, 플랫폼: 내일배움캠프 언리얼 3/4기 제공

배경 음악

  • 배달은 자신있어 by 배달의 민족
  • 미래도시라솔파 by 배달의 민족
  • 거의 다 왔어요 by 배달의 민족

0개의 댓글