유니티 타일 꾸미기
Unity/Study2023. 11. 25. 17:34유니티 타일 꾸미기

📌 타일 꾸미기유니티 TilePalette 기능을 통해 타일 맵 생성과 충돌 구현 📌 구현 목록🎁 타일 리소스 찾기https://gowldev.itch.io/nature-pixels-v2 Nature Pixels V2 | Top-down Pixel Art Asset Pack by GowlNature Pixels a top-down pixel art asset pack that can help u build your game world the way u love it!gowldev.itch.ioitch.io에서 괜찮은 무료 타일 에셋 하나 구하기🔧 TilePalette 타일 팔레트에서 타일들을 첨부하기, 첨부할 때 최대한 보기 좋게 정리하는걸 추천함 🔧 타일 맵 타일 맵을 만들때는 한번에 디자인 ..

유니티 Input System을 활용한 캐릭터 회전 구현
Unity/Study2023. 11. 25. 17:00유니티 Input System을 활용한 캐릭터 회전 구현

📌 캐릭터 회전 구현탑다운 시점으로 캐릭터 회전을 구현한다. 마우스 바라보는 방향에 따라 플레이어 이미지 좌우 반전  📌 구현 목록 📄 PlayerInputController.cspublic void OnLook(InputValue value){ Vector2 newAim = value.Get(); Vector2 worldPos = _camera.ScreenToWorldPoint(newAim); newAim = (worldPos - (Vector2)transform.position.normalized); if (newAim.magnitude >= 0.9f) { CallLookEvent(newAim); }} 컨트롤러에 OnLook 매서드 추가마우스..

유니티 Input System을 활용한 캐릭터 이동 구현
Unity/Study2023. 11. 24. 20:54유니티 Input System을 활용한 캐릭터 이동 구현

📌 캐릭터 이동 구현탑다운 시점으로 캐릭터 이동을 구현한다.W,A,S,D 조작으로 xy축 방향으로 자유롭게 이동한다. 📌 구현 목록📄 PlayerMove.csprivate float speed = 5.0f;void Update(){ float x = Input.GetAxis("Horizontal"); float y = Input.GetAxis("Vertical"); transform.position += new Vector(x, y) * speed * Time.deltaTime;}기본적인 유니티 캐릭터 움직임 코드그러나 게임 볼륨이 커질수록 이걸 효율적으로 관리할 수 있는 기능이 필요하다.📄 TopDownCharacterController.cspublic event Acti..

C#/텍스트 게임 "Shelter"2023. 11. 17. 21:09팀 프로젝트 - 여러가지 기능 구현

📌 키 조작 캐릭터 생성을 제외하고는 번호로 입력 받지않고 키보드 조작으로 해결을 하려한다. 기본적인 씬들 (상태, 인벤토리) 에서는 단 보기만 하고 나가면 되는 간단한 기능을 구현 장비 관리창은 장비를 보는 기본 상태와 장착하는 관리 상태로 단계를 구분

팀 프로젝트 - 캐릭터 생성하기
C#/텍스트 게임 "Shelter"2023. 11. 16. 16:15팀 프로젝트 - 캐릭터 생성하기

📌 팀 프로젝트 개인 과제를 마치고, 일주일 간 팀 프로젝트로 같이 협업하는 기간을 주었다 그런데 나는 다음주에 동원 훈련이 예정돼 있어, 3일에 시간안에 필수 기능을 구현해야 한다. 📌 캐릭터 생성 📄 CreateCharacterScene.cs // 캐릭터 생성 씬 public class CreateCharacterScene : Scene { // 단계별 캐릭 생성 private enum CreateStep { Name, Job, Exit } private CreateStep currentStep = CreateStep.Name; // 현 단계 private string errorMessage = string.Empty; // 에러 메세지 private string createName = string...

C#/텍스트 게임 "Shelter"2023. 11. 13. 17:077일차. 게임 마무리

📌 게임 마무리 일주일간 구현하면서 부족한 부분 마무리 하기 📌 구현 목록 🔧 장비 장착 시 스탯 반영 // 스탯 타입 public enum StatType { ATK, DEF, ACC, EVA, None, } // 장비 장착 시, 스탯 추가 private void AddStat(StatType statType, int stat) { switch (statType) { case StatType.ATK: Game.Player.Atk += stat; break; case StatType.DEF: Game.Player.Def += stat; break; case StatType.ACC: Game.Player.Acc += stat; break; case StatType.EVA: Game.Player.Eva +=..

6일차. 게임 화면 꾸미기
C#/텍스트 게임 "Shelter"2023. 11. 13. 14:586일차. 게임 화면 꾸미기

📌 게임 화면 꾸미기 콘솔 화면 크기를 조정하여 게임 사이즈를 고정한다. 고정된 게임 사이즈 내에서, 출력되는 글자 위치를 정렬한다. 그리고 플레이어가 보는 메인 화면과 상태이상을 나타내는 사이드 화면을 구현한다. 📌 구현 목록 📄 Renderer.cs // 콘솔 화면 출력 클래스 public static class Renderer { private static int width; private static int sideWidth; private static int height; public static void Initialize() { Title = "SHELTER"; ForegroundColor = ConsoleColor.White; Clear(); CursorVisible = false; wid..

C#/텍스트 게임 "Shelter"2023. 11. 10. 19:235일차. 상점 시스템 구현

📌 상점 시스템 구현 상품 리스트를 생성하고, 해당 상품을 플레이어 인벤토리에 다시 관리할 수 있는 기능 구현 🔧 Buy // 상품 리스트 복사 public static List productLists = Game.ShopProducts.ToList(); // 상품 구매 static void Buy() { var item = productLists[currentItemIdx]; if (item == null || item.IsEmptyItem()) return; // Bool 체크를 통해 상품 구매 if (Game.player.IsTrade(item.Price)) { Game.player.Inventory.Add(item); productLists.Remove(item); } } Game.cs에서 선언한..

4일차. 인벤토리 List 활용 & 스테이지 진행
C#/텍스트 게임 "Shelter"2023. 11. 9. 19:414일차. 인벤토리 List 활용 & 스테이지 진행

📌 인벤토리 List 활용 List를 활용한 인벤토리 아이템 타입 추가 및 정렬 기능 추가 🔧 ToList List screenInventory = Inventory.ToList(); Screen에 보여줄 용도로 List 값 복사 List는 참조 형식이다. 단순히 List1 = List2 와 같은 형식으로 대입하면 List2의 주소값만 List1에 대입되어 List1의 값이 변경되었을 때 List2의 값도 변경된다. ToList()를 사용하면 참조하지 않고 값만 복사 할 수 있다. 🔧 OrderBy, OrderByDescending // 아이템 이름 오름차순 정렬 (ㄱㄴㄷ 순서) screenInventory = Inventory.OrderBy(item => item.Name).ToList(); // 아이..

C#/텍스트 게임 "Shelter"2023. 11. 8. 12:323일차. 스크린 관리

📌 준비 로비, 메인, 인벤토리, 장비관리 등등, 앞으로 화면을 출력하고 제어할 클래스 구현 📌 개발 📄 ScreenManager.cs public class ScreenManager { // 스크린 타입에 맞게 화면 출력 public void DisplayScreen(ScreenType screenType) { IScreen screen = screenType switch { ScreenType.Main => new ScreenMain(), ScreenType.MyInfo => new ScreenMyInfo(), ScreenType.Inventory => new ScreenInventory(), ScreenType.Equipment => new ScreenEquipment(), _ => new Scre..

image