<aside> 👀 프로젝트 소개

다양한 종류의 AI탱크를 처지하고 점령지를 탈환하자!

항목 내용
장르 밀리터리 TPS 게임
플랫폼 PC
맵 컨셉 랜덤하게 스폰되는 AI탱크를 모두 처치하거나 지정된 점령지를 탈환 시 승리 (게임 종료)
개발 내용 Off-Screen Indicator UI, 미니맵UI 를 포함해 전투 경험을 강화하는 UI 개발, AI탱크 개발
</aside>

<aside> 📹

프로젝트 시연 영상

https://youtu.be/QvqlY-0BTxU

</aside>

✔️ 사용 기술 스택

✔️ 개발 내용

✔️ 게임 구조

스크린샷 2025-06-14 202453.png

✔️ 개발 내용 상세

점령지 Off-Screen Indicator UI

<aside> 💬 기능 개요

제목 없는 동영상 - Clipchamp로 제작.gif

</aside>

✅ 구현 방식

  1. 점령지를 캐싱한 후, 현재 뷰포트 사이즈와 스케일값을 저장한다.

    const FVector2D CurrentViewportSize = UWidgetLayoutLibrary::GetViewportSize(this);
    const float CurrentViewportScale = FMath::Max( UWidgetLayoutLibrary::GetViewportScale(this), 0.001f );
    
  2. ProjectWorldToScreen()를 이용해 월드 좌표를 스크린 픽셀 좌표로 변환한다.

    image.png

  3. 카메라를 기준 방위각을 이용한 Target의 화면 방향 벡터를 구한다.

    image.png

  4. 화면 중앙에서 → 2번에서 얻은 방향 벡터로 쏜 2D레이를 경계까지 진행, 교차점을 구한다.

    image.png

  5. UI의 위치 및 화살표 방향 업데이트

미니맵 UI

<aside> 💬

기능 개요

미니맵.gif

</aside>