2024.08.05
이번 글에서는 원반 사격 게임의 기획 초안을 다룹니다. 이 게임의 주요 기능, 사용 기술, 각 기능의 구현 방법 등을 상세히 설명합니다. 원반 스폰, 원반 이동, 사용자 입력 처리, UI 구성, 점수 계산 등 게임의 핵심 요소들을 다루며, 프로젝트 진행을 위한 구체적인 로드맵을 제시합니다.
한 줄 요약하면 원반 사격 게임입니다.
깃허브! |
---|
★ https://github.com/ChangJin-Lee/ShootWonban |
원반 스폰은 게임의 중요한 기능 중 하나로, 일정한 규칙에 따라 새로운 원반을 생성합니다.
스폰 위치
FVector SpawnLocation = FVector(FMath::RandRange(-500.f, 500.f), FMath::RandRange(-500.f, 500.f), 300.f);
FRotator SpawnRotation = FRotator::ZeroRotator;
GetWorld()->SpawnActor<AClayPigeon>(ClayPigeonClass, SpawnLocation, SpawnRotation);
스폰 타이밍
GetWorld()->GetTimerManager().SetTimer(SpawnTimerHandle, this, &AShootWonbanGameMode::SpawnClayPigeon, SpawnInterval, true);
원반의 이동은 물리 엔진이나 커스텀 로직에 의해 제어됩니다.
FVector Velocity = FVector(FMath::RandRange(-500.f, 500.f), FMath::RandRange(-500.f, 500.f), 1000.f);
ClayPigeon->GetMesh()->SetPhysicsLinearVelocity(Velocity);
사용자의 입력을 처리하여 게임의 주요 기능을 수행합니다.
프로젝트 세팅 → 입력 → 액션 및 바인드 설정
PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &AShootWonbanCharacter::Fire);
카메라 확대 및 조준
마우스 우클릭 시 카메라가 확대되어 조준하도록 설정합니다.
코드 예시:
void AShootWonbanCharacter::BeginZoom()
{
CameraComponent->FieldOfView = ZoomedFOV;
}
void AShootWonbanCharacter::EndZoom()
{
CameraComponent->FieldOfView = DefaultFOV;
}
게임의 다양한 상태를 표시하는 UI를 설계합니다.
메인 메뉴
인게임 UI
게임 종료 화면
플레이어가 맞춘 원반의 수에 따라 점수를 계산합니다.
int32 CalculateScore(int32 HitCount, int32 TotalCount)
{
return (HitCount / TotalCount) * 100;
}
게임에서 플레이어가 패배하는 조건을 설정합니다.
if (RemainingAmmo <= 0)
{
EndGame();
}
이 기획 초안을 바탕으로 프로젝트를 진행하고자 합니다. 각 작업을 분담하여 효율적으로 작업을 진행하고, 구체적인 로드맵을 작성하여 게임을 완성할 예정입니다. 추가적인 정보나 수정이 필요하면 언제든지 알려주세요!