Unity 41

드롭 시스템 구현 및 디버깅

학습 동기몬스터가 사망했을 때 아이템과 골드를 드롭하고, 일정 시간 후 플레이어에게 빨려들어가는 연출을 구현하고자 했다. 또한 드롭된 아이템을 자동으로 인벤토리에 추가하거나 골드를 증가시키는 시스템이 필요했다.학습 내용1. 드롭 시스템 기본 구조EnemyDropHandler 스크립트에서 드롭 아이템과 골드 프리팹을 Instantiate()로 생성일정 시간 후 MoveToPlayer() 함수를 통해 아이템이 플레이어 방향으로 가속 이동도착 시 HandlePickup()에서 아이템 종류별 처리 (스킬북, 룬, 포션, 골드)2. 드롭 애니메이션DOTween을 사용하여 아이템이 사망 지점에서 살짝 튀어나온 뒤 1초 후 빨려들어감AggressiveTrackPlayer()에서 속도를 점점 증가시켜 부드러운 연출 구..

Unity/Unity 개발 2025.07.11

벡터 이미지에 도트 셰이더 적용하기

학습 동기도트 스타일 게임을 만들면서, 에셋을 찾아봤지만, 스킬 이펙트나 톤이 맞는 에셋을 찾기 어려워서 벡터이미지를 사용 후, 셰이더로 해상도를 낮춰서 사용하고자했다.학습 내용벡터 이미지를 픽셀 단위로 낮은 해상도로 샘플링하고, 이를 다시 스케일업하여 도트 느낌을 내는 셰이더를 만든다. 핵심은 다음과 같다:1. 픽셀화(Pixelation)의 개념2. UV 좌표와 샘플링3. Pixel Size의 역할4. 시각적 연출 vs. 실제 해상도5. 텍스처 필터링 주의픽셀화를 제대로 표현하려면 텍스처의 필터링 설정이 중요하다.Filter Mode는 반드시 Point로 설정해야 선명한 블록형 도트를 표현할 수 있다. 그렇지 않으면 보간이 적용되어 도트 효과가 흐려진다.도트 셰이더는 렌더링 연출일 뿐 실제 이미지의 해..

Unity/Unity 개발 2025.07.10

튜토리얼 시스템과 스킬 연동

학습 동기튜토리얼 시스템을 점차 게임 진행과 연동시키는 작업을 하면서, 플레이어의 행동(이동, 상호작용, 스킬 사용 등)을 정확히 감지하고 튜토리얼 흐름을 자연스럽게 연결하는 방법에 대해 고민하였다. 또한, 룬과 스킬 시스템을 통합한 구조 내에서 EventBus 및 Action 활용을 통해 학습 진행을 감지하는 방법을 실험하였다.학습 내용튜토리얼 시스템 분기 구조 구현TutorialManager가 currentStep을 기준으로 튜토리얼 분기를 진행.DialogueManager의 결과 seq를 통해 다음 스텝으로 진행 (TutorialStep(int step)).currentStep이 의도치 않게 초기화되는 문제를 조건 검사로 해결 (if (currentStep == -1)).튜토리얼 진행 조건으로 플레..

Unity/Unity 개발 2025.07.09

튜토리얼 시스템 구조 설계 및 구현

오늘은 튜토리얼 시스템을 제작했다.제작내용TutorialManager를 만들어 튜토리얼의 전반적인 흐름을 제어DialogueManager를 통해 튜토리얼 전용 대사를 출력한 뒤, 조건에 따라 가이드 오브젝트 활성화MoveDirectionObject를 통해 플레이어가 어느 방향으로 이동해야 할지 시각적으로 안내MoveDirectionLastPointObject에 도착하면 트리거를 감지해 다음 단계로 자동 진행튜토리얼 단계는 currentStep으로 관리하고, switch-case 방식으로 다음 행동을 정의

Unity/Unity 개발 2025.07.08

NPCController 구조 설계 정리

학습 동기NPC와의 상호작용 시스템을 만들고자 했다. 플레이어가 특정 NPC 근처에 다가가면 툴팁이 나타나고, 상호작용 키 입력 시 각기 다른 동작을 수행하도록 설계하고 싶었다.학습 내용공통 동작을 담당하는 NPCController 작성플레이어가 Collider 범위 내에 진입하면 툴팁 UI(TooltipPanel)을 활성화하고, NPC 상단에 표시되도록 함tooltipText라는 string 필드를 통해 NPC마다 고유한 툴팁 메시지를 보여줄 수 있도록 구성PlayerInputActions와 InputSystem을 연동하여 E 키 입력 시 Interact() 함수 호출실제 상호작용 로직은 virtual 함수로 선언하고, 자식 클래스에서 override하여 각각 다르게 구현자식 클래스 설계CaveNPCC..

Unity/Unity 개발 2025.07.07

대화 다이얼로그 & 상호작용 토글 UI

학습 동기게임 내에서 NPC와의 대화나 상호작용 가능한 오브젝트를 구현할 때, 각각의 상황에 맞는 UI를 따로 만들기보다 공통적으로 사용할 수 있는 대화 다이얼로그와 상호작용 안내 UI를 설계해두면 개발 효율성과 유지보수성이 크게 향상된다. 이러한 이유로 오늘은 재사용 가능한 두 가지 UI 구조를 제작하였다.제작 내용대화 다이얼로그 (Dialogue UI)역할: NPC와의 대사 내용을 출력하고, 이름, 문장, 선택지 등을 표시구성: 이름 텍스트, 대사 텍스트, 배경 패널, (선택지가 있다면 버튼들)동작 방식: 외부에서 대사 내용을 전달받아 UI에 표시하며, 대화가 종료되면 UI를 숨긴다. 이후 선택지 분기, 대사 스크립트 연동 등으로 확장 가능하도록 설계한다.2.상호작용 토글 (Interaction To..

Unity/Unity 개발 2025.07.04

Unity Tilemap Animator

학습 동기게임 내에서 반복적으로 애니메이션이 필요한 타일을 손쉽게 관리하고자 했다. Unity 기본 Animated Tile 기능은 기능이 제한적이고, 타일마다 따로 애니메이션을 설정해야 하므로 더 유연하고 자동화된 방식을 찾다가 Tilemap Animator 패키지를 발견해 도입해보게 되었다.학습 내용1. Tilemap Animator 설치 방법 (Git URL 사용)Unity 메뉴에서 Window → Package Manager로 이동좌측 상단 + 버튼 클릭 후, Add package from Git URL... 선택아래 Git URL 입력arduino복사편집https://github.com/Heartbroken-Games/TilemapAnimator.git 설치가 완료되면 Tilemap Animat..

Unity/Unity 개발 2025.07.03

Rule Tile

학습 동기타일맵 기반 게임에서 맵 제작 속도를 높이고, 타일 종류에 따라 자동으로 주변 타일을 맞춰 배치하고 싶어 Rule Tile을 학습하게 되었다. 특히 벽이나 땅 같은 타일을 수동으로 하나하나 조절하는 번거로움을 줄이고 싶었다.학습 내용Rule Tile이란?Unity 2D Tilemap 시스템에서 제공하는 타일 자동 배치 도구로, 주변 타일을 기준으로 적절한 스프라이트를 자동으로 선택하여 배치할 수 있다. Rule Tile은 Unity의 2D Tilemap Extras 패키지에 포함되어 있으며, 별도 설치가 필요하다.사용 방법2D Tilemap Extras 설치Unity Package Manager에서 Git URL 추가arduino복사편집https://github.com/Unity-Technolo..

Unity/Unity 개발 2025.07.02

Unity 공통 alert, confirm 매니저 제작

학습 동기자바스크립트에서 자주 쓰는 alert()이나 confirm() 함수처럼, 간단하게 호출만 하면 팝업을 띄우고 사용자의 응답을 받을 수 있는 구조가 참 편리하다고 느꼈다. Unity에서도 그런 식으로 팝업을 쉽게 띄울 수 있으면 여러 시스템에서 공통으로 쓸 수 있을 것 같아서, 전역에서 접근 가능한 팝업 시스템을 직접 만들어보기로 했다.학습 내용StaticPopupManager라는 싱글톤 클래스를 만들어서 팝업을 전역에서 사용할 수 있도록 구성했다. ShowAlert() 함수는 OK 버튼 하나만 있는 알림창, ShowConfirm()은 Yes/No 버튼으로 사용자 선택을 받을 수 있도록 만들었다. 버튼 클릭 이벤트는 중복 실행을 막기 위해 onClick.RemoveAllListeners()로 초기..

Unity/Unity 개발 2025.07.01