Unity 27

[EP73] 뱀파이어 서바이버라이크 – 게임 시작▶️·게임오버☠️·승리🏆·재시작🔄 시스템 구현

이제 전투·성장·레벨업 UI까지 게임의 핵심 루프는 거의 완성되었습니다. 이번 EP에서는 “완성품 게임”에 반드시 필요한 시스템을 마무리합니다.즉, 게임 시작 화면 → 플레이 진행 → 사망(게임오버) 또는 생존(승리) → 재시작 흐름을 UI/로직으로 연결하고, 종료 시점의 예외(타임스케일, 경험치, 몬스터 정리 등)까지 안정적으로 처리합니다.01. 게임 시작 UI 구성 및 시작 로직 연결1) GameStart 그룹 만들기Canvas 우클릭 → Empty Object 생성 → 이름 GameStartGameStart 아래에 UI → Image 생성스프라이트: Title(Undead Survivor)Set Native SizeScale: 1.5Shadow 추가(알파 90, 거리/효과 값은 적당히 조정)이름 T..

[EP72] 뱀파이어 서바이버라이크 – 레벨업 UI 완성🎛️·시간정지⏸️·랜덤 3선택 구현

지난 EP에서 능력 업그레이드의 “기능”은 완성했습니다. 이번 EP에서는 그 기능을 실제 게임 플레이 흐름에 맞게 다듬어, 레벨업 순간에 UI 창이 등장하고(Show), 선택 후 사라지며(Hide), 그 동안 게임 시간이 멈추는(TimeScale=0) 완성형 레벨업 시스템으로 발전시킵니다.또한 뱀서라이크의 핵심 UX인 ‘랜덤 3개 선택’을 구현하고, 만렙 아이템은 소비 아이템으로 대체하는 규칙까지 적용해, 실제 게임처럼 “선택의 고민”이 발생하도록 만듭니다.01. UI 완성하기 (레벨업 창 구성)1) 배경(딤 처리) 추가Canvas 우클릭 → UI → Image앵커: Stretch(전체 화면)색: Black + Alpha 약 150(반투명)이름: LevelUp목적: 레벨업 창이 뜰 때 플레이 화면을 어둡..

[EP71] 뱀파이어 서바이버라이크 - 능력 업그레이드💪구현

뱀파이어 서바이버라이크에서 “재미의 핵심”은 전투 그 자체보다도, 전투 중에 쌓이는 성장 곡선입니다. 이번 EP에서는 능력 업그레이드 시스템을 데이터 중심으로 설계하고, UI 클릭을 통해 무기/장비/소모품(회복)이 실시간으로 반영되는 구조를 구현합니다.핵심은 다음 3단계입니다.ScriptableObject(ItemData) 로 아이템 정보를 데이터화레벨업 UI 버튼(Item) 으로 아이템 선택·레벨 증가·표시 갱신무기(Weapon) / 장비(Gear) 로직으로 플레이어 능력치에 실제 반영추가로, 무기 생성/업그레이드 시 장비 효과가 누락되지 않도록 BroadcastMessage + DontRequireReceiver 패턴으로 안정적으로 동기화합니다.1. 아이템 데이터 만들기 (ItemData: Scrip..

[EP69] 뱀파이어 서바이버라이크 - 타격감🌟있는 몬스터 처치 만들기

01. 피격 리액션: Hit 애니메이션 + 넉백(Knockback)A. Enemy OnTriggerEnter2D에서 “Hit 처리” 추가피격 시:anim.SetTrigger("Hit")StartCoroutine(KnockBack())주의:트리거 이름은 대소문자 구분(Animator 파라미터와 정확히 동일)B. KnockBack 코루틴(물리 프레임 1회 딜레이)yield return wait; 로 다음 FixedUpdate까지 1회 대기방향: (내 위치 - 플레이어 위치) 를 정규화해서 플레이어 반대 방향힘: rigid.AddForce(dir.normalized * 3f, ForceMode2D.Impulse);최적화 포인트:new WaitForFixedUpdate()를 코루틴에서 매번 생성하지 말고,멤버 ..

[EP68] 뱀파이어 서바이버라이크 - 자동🎯원거리 공격 구현

01. 몬스터 검색(Scanner) 구현1) Enemy 레이어 만들기/적용Layers에 Enemy 레이어 추가Enemy 프리펩 선택 → Layer = Enemy“자식도 함께 적용?” → Yes2) Scanner 스크립트(플레이어에 부착)필요 변수 4개float scanRange;LayerMask targetLayer; (Enemy 레이어만)RaycastHit2D[] targets; (배열)Transform nearestTarget;스캔은 FixedUpdate에서:Physics2D.CircleCastAll(현재위치, scanRange, Vector2.zero, 0, targetLayer);결과 중 거리 비교로 가장 가까운 Transform 반환핵심 로직targets = Physics2D.CircleCast..

[EP67] 뱀파이어 서바이버라이크 - 회전하는🪓근접무기 구현

근접 무기(삽) 오브젝트를 프리펩화Bullet(=근접무기) 스크립트로 데미지/관통 초기화Enemy에서 Trigger 충돌로 피격/사망 처리Weapon 스크립트로 근접무기를 “개수(count)”만큼 생성/배치 + 회전개수 증가(레벨업) 시 “기존 자식 재활용 + 부족분만 풀에서 추가”로 안정화01. 프리펩 만들기 (근접무기 오브젝트)씬에서 작업Props > Black_0(삽 스프라이트)을 플레이어 머리 위에 배치Tag 추가: Bullet오브젝트에 스크립트 Bullet 추가BoxCollider2D 추가 후 Is Trigger 체크프리펩으로 드래그하여 Prefabs/에 저장Bullet 스크립트에서 할 일(초기화 함수)Initialize(float damage, int pen)this.damage = damag..

[EP66] 몬스터 무한 생성 시스템: 프리팹, 오브젝트 풀링, 주변 스폰 포인트

전 강에서 몬스터(Enemy)를 만들고, 플레이어를 추적하고, 멀어지면 재배치(Reposition)까지 했습니다.이제 “뱀서라이크” 느낌을 내는 핵심은 하나입니다.몬스터가 플레이어 주변에 계속해서 ‘무한히’ 등장하는 구조이를 성능까지 고려해서 구현하려면 흐름은 다음 순서가 정석입니다.프리팹(Prefab) 만들기오브젝트 풀(Object Pool) 만들기풀에서 꺼내 스폰(Spawner)으로 사용하기플레이어 주변 스폰 포인트에 랜덤 배치01. 프리팹 만들기1) 씬 정리 및 프리팹 폴더 생성Enemy를 2마리만 남기고 나머지는 삭제(테스트용)Project 창에서:Survivor 하위에 폴더 생성: Prefabs2) Enemy A / Enemy B 프리팹화씬의 Enemy를 각각 이름 변경:EnemyA, Enemy..

[EP65] 캐주얼 물리 퍼즐게임 – 몬스터 생성과 추적 AI, 재배치 로직 구현

플레이어 이동과 무한 맵이 완성되었다면, 이제 이 게임이 게임다워지는 핵심 요소를 넣을 차례입니다.바로 몬스터(적) 입니다.이번 EP에서는몬스터 오브젝트를 직접 만들고플레이어를 물리적으로 추적하게 만들며맵에서 멀어졌을 때 다시 재배치되는 구조까지서바이버라이크 게임의 기본 적 시스템을 완성합니다.지금부터 하나씩 차근차근 만들어 보겠습니다.01. 몬스터 오브젝트 만들기먼저 몬스터의 외형과 기본 물리 세팅부터 진행합니다.1️⃣ 몬스터 스프라이트 배치Survivor > Sprites 폴더에는 5종의 몬스터 스프라이트가 준비되어 있습니다.이 강의에서는 1번과 2번 몬스터를 사용합니다.Run_0 스프라이트를 씬으로 드래그합니다.오브젝트 이름은 Enemy 로 변경합니다.2️⃣ Sprite Renderer 설정Sort..

[EP64] 뱀파이어 서바이버라이크 – 타일맵으로 지형 깔기 + 재배치(무한맵) + Trigger Exit 리포지션 + 카메라(Cinemachine) + Pixel Perfect

플레이어가 “움직이기” 시작하면 바로 다음 욕심은 딱 하나다.끝이 없는 맵을 걷는 느낌, 즉 “무한 이동”을 만들어보고 싶어진다.이번 EP에서는 타일맵으로 2D 지형을 깔고, 플레이어가 특정 구역(Area)을 벗어날 때마다 타일맵을 앞으로 재배치해서 무한맵처럼 보이게 만드는 구조를 구현한다.마지막으로 화면이 도트 픽셀처럼 “또렷하게” 보이도록 Pixel Perfect, 그리고 카메라가 자연스럽게 따라오도록 Cinemachine까지 설정한다.01. 타일 그리기: Tile Palette + Random Tile로 2D 지형 만들기1) 타일 팔레트 창 열기상단 메뉴에서:Window → 2D → Tile PaletteTile Palette 창을 띄워두고 진행한다.2) Random Tile(룰 타일) 다시 만들기..

[EP63] 뱀파이어 서바이버라이크 – 방향 바라보기(FlipX) + 셀 애니메이션 + Animator 파라미터 연동 + Override 재활용

플레이어가 “이동”만 되면 아직 게임처럼 보이지 않는다.게임다움은 결국 보이는 것(연출)에서 시작한다.이번 EP에서는 다음 4가지를 한 번에 완성한다.좌/우 입력에 따라 스프라이트 FlipX로 방향 바라보기플레이어 셀 애니메이션(Stand/Run/Dead) 제작Animator에서 상태 전환(Stand ↔ Run, Any State → Dead) 구성코드로 Speed 파라미터 값을 넣어 애니메이션 자동 전환캐릭터가 여러 명일 때를 대비해 Animator Override Controller로 재활용까지1) 방향 바라보기: FlipX를 “입력 방향”으로 자동 제어좌우 방향 전환의 핵심은 단순하다.왼쪽 입력이면 FlipX = true오른쪽 입력이면 FlipX = false다만 키를 누르지 않는 순간(0)에는 굳..

[EP62] 뱀파이어 서바이버라이크 개발 – C# 스크립트로 플레이어 이동 구현하기

이전 시간까지 우리는 플레이어 오브젝트를 만들고,스프라이트와 물리 컴포넌트를 설정해 기본적인 형태를 완성했다.이번 EP 62강에서는 드디어 C# 스크립트를 직접 작성해 플레이어를 움직여보는 단계로 들어간다.Unity에서 스크립트가 어떤 역할을 하는지,그리고 입력 → 물리 이동이 어떻게 연결되는지를 차근차근 구현해 보자.1. C# 스크립트 생성하기Unity에서 스크립트는 보통 프로젝트 구조를 먼저 정리한 뒤 생성하는 것이 좋다.스크립트 폴더 생성Project 창 빈 공간 우클릭Create → Folder이름: Code (또는 Scripts)플레이어 스크립트 생성Code 폴더 선택Create → C# Script이름: Player⚠️ 중요 주의사항스크립트를 생성한 직후 바로 더블클릭하지 말고,Inspecto..

[EP61] 뱀파이어 서바이버라이크 개발 – 프로젝트 시작과 플레이어 만들기

이번 시리즈에서는 뱀파이어 서바이버라이크 장르의 게임을 Unity로 직접 구현해본다.단순한 기능 설명이 아니라,프로젝트 생성부터 에셋 관리, 플레이어 오브젝트 구성까지실제 게임 개발 흐름에 맞춰 차근차근 진행할 예정이다.이번 강에서는Unity 설치와 기본 환경 설정프로젝트 생성(2D URP)에셋 임포트플레이어 오브젝트 생성 및 컴포넌트 구성까지를 다룬다.본격적인 로직 구현에 들어가기 전, 개발의 기초 체력을 다지는 단계라고 보면 된다.1. Unity 설치 및 Hub 설정Unity는 Unity Hub를 통해 관리하는 것이 기본이다.공식 홈페이지에서 Unity를 검색한 뒤 다운로드 페이지로 이동하면에디터가 아닌 Hub 설치 파일을 먼저 받게 된다.설치 시 추천 설정Unity Hub와 Editor는 C 드라이..

[EP54~60] 캐주얼 물리 퍼즐게임 완성 총정리

이 시리즈는 Unity를 활용해 하나의 캐주얼 물리 퍼즐 게임을 처음부터 끝까지 완성하는 과정을 담고 있다.단순히 기능을 나열하는 튜토리얼이 아니라,“실제로 배포 가능한 게임을 만드는 흐름”을 경험하는 것을 목표로 한다.초반에는 물리 시스템과 기본 게임 로직을 구현하고,중반에는 오브젝트 풀링과 같은 최적화 기법을 적용하며,후반부에서는 UI 구성, 점수 및 데이터 저장, 게임 시작과 종료 흐름을 완성한다.마지막으로 Android 빌드를 통해 실제 스마트폰에서 실행 가능한 APK를 만들어 본다.특히 이 시리즈는 다음과 같은 질문에 답하는 데 초점을 맞춘다.기능이 구현된 이후, 코드는 어떻게 정리해야 할까?모바일 환경에서도 UI가 깨지지 않게 하려면 무엇을 고려해야 할까?게임의 시작과 종료는 어떤 구조로 설계..

[EP60] 캐주얼 물리 퍼즐게임7 – 최적화의 핵심, 오브젝트 풀링(Object Pooling)

게임을 어느 정도 구현하고 나면 반드시 마주하게 되는 문제가 있다.바로 성능 최적화다.처음에는 문제없이 동작하던 게임도,총알이 많아지고 이펙트가 늘어나며 몬스터 수가 증가하면어느 순간부터 프레임 드랍과 끊김 현상이 발생한다.이번 강의에서는 이러한 문제의 근본 원인 중 하나인Instantiate / Destroy의 반복 호출을 해결하기 위한오브젝트 풀링(Object Pooling) 기법을 다룬다.오브젝트 풀링은 단순한 테크닉이 아니라,모든 게임 개발자가 반드시 익혀야 할 최적화의 기본 개념이다.이번 EP60에서는 풀의 생성부터 재사용 로직, 그리고 실전에서 반드시 필요한초기화 처리까지 단계적으로 구현해본다.1. 오브젝트 풀링이 필요한 이유오브젝트를 생성할 때 사용하는 Instantiate()와삭제할 때 사..

[유니티 Tips] 게임 기획에서 고려해야할 유니티 개발 핵심 요소 7가지

게임 개발은 그래픽을 그리는 것만으로 완성되지 않는다.어떤 장르이든, 어떤 플랫폼이든—모바일, PC, 콘솔, 인디, AAA 작품까지—모든 게임에는 반드시 존재해야 하는 핵심 요소들이 있다.이 요소들은 서로 역할을 분리하며, 잘 조직된 구조를 기반으로 게임의 안정성과 확장성을 높인다.이번 글에서는 대부분의 게임에서 공통적으로 등장하는 핵심 시스템 7가지를 정리해보았다.1. GameManager – 게임 전체를 지휘하는 총괄 관리자GameManager는 게임의 “감독(Director)” 역할을 수행한다.메뉴 화면에서부터 인게임, 스테이지 전환, 클리어/실패 처리까지 게임의 전체 흐름을 관리한다.주요 역할게임 상태(State) 관리스테이지 로딩 및 초기화게임 시작/종료/재시작 처리UI·보드·캐릭터 초기화 제어..