유니티 로그라이크 미니맵 구현
Unity/UI2023. 12. 20. 20:53유니티 로그라이크 미니맵 구현

기능 구현미니맵 구현에 필요한 Fields#region Fields[SerializeField] private Transform miniRoomContainer;private float cellWidth;private float cellHeight;private GameObject miniRoomPrefab;private GameObject[,] miniRoomArray;private Vector2Int currentPlayerCoordinate;private List visitedCoordinates = new List();#endregionminiRoomContainer : 미니맵 셀들이 배치되는 Transform ParentcellWidth : 미니맵 셀의 너비cellHeight : 미니맵 셀의 높..

유니티 로그라이크 다음 방으로 이동
Unity/Study2023. 12. 19. 00:42유니티 로그라이크 다음 방으로 이동

기능 구현MoveToDesignativeRoom/// /// 방에 진입할 시, 좌표 설정 및 문 활성화 체크/// /// 들어간 방향/// 카메라 움직임 딜레이private IEnumerator MoveToDesignativeRoom(Vector2Int MoveDirection){ int x = _currentRoom.Coordinate.x + MoveDirection.y; int y = _currentRoom.Coordinate.y + MoveDirection.x; _currentRoom = _roomArray[x, y]; _currentRoom.OpenActivatedDoor(); Main.Game.Player.transform.position += new Vector3(M..

유니티 로그라이크 문으로 방 연결하기
Unity/Study2023. 12. 18. 17:48유니티 로그라이크 문으로 방 연결하기

📌 연결된 문 생성 📄 Dungeon.cs private void CreateDungeon(){ // 방 생성을 위한 좌표 리스트 List alternativeRoomList = new(); List hasBeenRemoveRoomList = new(); // 특수 방 리스트 List specialRoomList = new(); ... ... ... LinkDoors(); // 방 문이 1개인 경우 => 특수 방으로 추가 foreach (Room room in _roomArray) { if (room != null && room.ActiveDoorCount == 1 && room != currentRoom) {..

유니티 로그라이크 방 생성
Unity/Study2023. 12. 15. 20:50유니티 로그라이크 방 생성

기능 구현GameScene.cspublic class GameScene : MonoBehaviour{ #region Field [SerializeField] private int roomAmount; private Room _roomPrefab; private Room[,] _roomArray = new Room[20, 20]; #endregion #region Init private void Start() { Main.Resource.Initialize(); // #1. 방 생성 _roomPrefab = Main.Resource.GetObject("Room").GetComponent(); CreateLevel(..

유니티 Json 데이터 관리
Unity/Study2023. 12. 12. 21:11유니티 Json 데이터 관리

기능 소개유니티에는 여러 데이터 저장 방식 중, Json으로 데이터를 저장하는 기능을 구현하도록 한다기능 구현DataManager.cspublic class DataManager{ public Dictionary Items = new(); public void Initialize() { Items = LoadJson("ItemData").MakeData(); } private TLoader LoadJson(string path) where TLoader : ILoadData { TextAsset textAsset = Main.Resource.Load(path); return JsonConvert.DeserializeObject(text..

유니티 Stat Modifier
Unity/Study2023. 12. 11. 21:14유니티 Stat Modifier

기능 소개단순 Stat 값을 더하고 빼는게 아닌 Stat Modifier를 통한 관리더티플래그(Dirty Flag) 디자인 패턴 사용기능 구현StatModifierpublic enum StatModType{ Flat, PercentAdd, PercentMult,}public class StatModifier{ public readonly float Value; public readonly StatModType Type; public readonly int Order; public readonly object Source; public StatModifier(float value, StatModType type, int order, object source) ..

유니티 Manager System
Unity/Study2023. 12. 5. 20:19유니티 Manager System

기능 소개플레이어 정보를 관리하기 위해 Manager System 구축Managers를 통해 각 담당 매니저를 인스턴스 하는 클래스 구현 [제너릭 싱글톤]기능 구현제너릭 싱글톤public abstract class SingletonBehaviour : MonoBehaviour where T : SingletonBehaviour{ private static T instance = null; public static T Instance { get { return instance; } } protected virtual void Awake() { if (instance != null) { Debug.LogError(string.Format("허..

유니티 2D 공 충돌 물리엔진
Unity/Study2023. 11. 30. 18:55유니티 2D 공 충돌 물리엔진

2D 공 충돌 물리엔진'알카노이드' 스타일의 공 충돌 물리엔진을 구현하려 한다.기능 소개화면 충돌화면을 덮는 Edge Collider 2D를 생성바닥은 다른 Box Collider 2D로 충돌 시, 공을 파괴시키는 기능을 추후에 넣을 예정 Ball Bound Screenpublic static class Extensions{ /// 카메라 사이즈에 맞는 엣지 콜라이더 바운드 생성 public static void GenerateCameraBounds(this EdgeCollider2D screenEdge) { var halfScreenHeight = Camera.main.orthographicSize; var halfScreenWidth = Camera.main...

image