Unity
-
14주차 - 리펙토링Unity/Unity 스파르타 2024. 3. 19. 22:40
데이터 테이블 생성으로 대폭 로직수정 및 불필요한 코드 삭제 정리 맵을 구성히는 요소들을 모두 Json으로 데이터화 시켜 파일로 저장. 3개의 리스트로 나눠서 저장 타일 데이터 오브젝트 데이터 상호작용 오브젝트 데이터 연결된 버튼을 모두 활성화 해야지 열리는 문 특수한 오브젝트들은 구조체를 만들어 데이터를 따로 저장해놓음 상호작용 문안에 연결된 버튼의 위치정보를 저장, 맵 데이터를 저장할때는 문 오브젝트 아이디와 링크아이디, 연결된버튼의 위치정보리스트를 구조체로 데이터화 맵을 로드해 올때는 엑셀로 만들어논 맵 오브젝트 데이터 테이블에서 아이디를 사용해 리소스 경로를 가져와 생성.
-
13주차 - 맵 데이터화..Unity/Unity 스파르타 2024. 3. 15. 18:43
맵 에디터 데이터 생성 및 불러오기 맵크기 영역 그리드 안에 오브젝트 추가 맵 데이터 세이브, 저장된 Json 파일로 맵 불러오기. (에디터를 통한 오브젝트 추가는 아직 미구현) 모든 오브젝트에는 BuildObj 클래스를 상속 받고, 해당 클래스 안에는 TileData 라는 구조체가 있는데 안에 기본적인 현재 오브젝트의 타입과, 오브젝트의 리소스 경로, 생성위치가 들어있습니다. [System.Serializable] public class BuildObj : MonoBehaviour { private TileType tileType; private Vector2 position; public string path; public TileData tileData; public void SetTileData(..
-
13주차 - 맵..Unity/Unity 스파르타 2024. 3. 14. 18:11
맵 사이즈가 결정되면 아웃라인 그려주고 에디터 모드라면 격자판을 생성해주기. 맨처음 초기화로, MapObjBox 오브젝트를 만들어 여기다가 맵을 구성하는 오브젝트들을 모아주자. MapObjBox안에 바닥을 구성하는 FloorTransform, 오브젝트들을 구성하는 ObjectTransform, 그려진 아웃라인을 모아놓은 OutLineTransform, 격자판 GridPlateTransform 맵 크기가 재설정 될때마다 아웃라인과 격자판 재 생성. 1. 에디터 모드와 비에디터 모드 구분 2. 에디터 모드일때 - 맵 크기 결정시 자동 아웃라인 생성과 격자판 생성. - 맵 크기 재 조정시 맵밖에있는 오브젝트 자동 제거 데이터 매니저에 맵 데이터 이관 매니저- 데이터매니저 - 맵데이터 [맵아이디] 맵 기믹. 제..
-
13주차 - 맵 데이터 세이브, 및 로드Unity/Unity 스파르타 2024. 3. 11. 20:21
1. 맵 데이터를 리소스폴더에 Json 파일로 저장하기 2. 저장한 데이터 불러오기 3. 맵 에디터에서 새로 만든 맵인지, 불러온 맵인지에 따라 저장 로직을 다르게 만들기 1. 맵 데이터를 리소스폴더에 Json 파일로 저장하기 파일 저장할 경로 구하기 Application.dataPath 를 사용해 현재 실행된 프로젝트의 Asset 폴더의 절대경로를 알 수 있습니다. folderPath = Path.Combine(Application.dataPath, "Resources/MapDat"); 맵에 데이터를 Json 파일로 변환해 저장합니다. void CreateJsonFile() { Map map = new Map(mapID, mapTileDataList, playerSpawnPosition, playerE..
-
12주 - 최종 프로젝트(2D)Unity/Unity 스파르타 2024. 3. 6. 20:43
이번 프로젝트 목표 맵 에디터 생성과 맵 정보를 데이터화 고민- 더보기 맵에는 여러가지 정보를 담고 있을텐데, 어떤식으로 접근하면 좋을까. 맵을 구성하기 위해 무엇이 필요할까 - 맵의 크기 - 맵을 구성하는 타일 - 맵에 배치 시킬 수 있는 장애물 및 오브젝트 어떤 것을 데이터화 시키면 좋을까? 맵을 구성하고있는 타일 및 오브젝트들을 타입과 아이디를 통해 저장해놓고 스크립터블 오브젝트를 사용해 타입과 아이디로 접근해 특정위치에 생성시키는건 어떨까. 구조체로 타입과, 타일 또는 오브젝트의 아이디, 생성위치를 만들어서 데이터화 해서 사용하면 어떨까
-
11주차 - 패시브 스킬 트리 구현Unity/Unity 스파르타 2024. 3. 2. 17:04
플레이어의 스테이터스를 증가시켜주는 패시브 스킬 트리를 만들어보자. 1. 현재 찍은 스킬들을 모아놓은 딕셔너리 생성 - PlayerStats - 현재 가지고 있는 스킬들을 확인 2. UpgradeStats_Base 클래스 생성 - 여러가지 스테이터스를 증가 시킬 수 있으니 증가시킬 스테이터스와 증가량, 고정값으로 올릴지 퍼센테이지로 올릴지 정하는 타입을 가진 구조체를 리스트로 만들기. public List upgradeStatusList = new List(); - 최대 몇까지 스킬을 찍을 수있는지 선택 - 해당 스킬을 찍기위한 조건을 확인하기위한 구조체 생성 - 조건을 만족해 스킬을 찍었을 때 실행할, 스킬과 스킬을 연결하는 라인 생성 public List lineList = new List(); - ..
-
10주차 - 개인 심화 3D(NavMeshAgent.path.corners, NavMeshSurface , Animation Curve)Unity/Unity 스파르타 2024. 2. 22. 17:45
1. 이동 로직 수정하기 (NavMeshAgent.path.corners) 2. 숨겨진 문 상호작용 만들기 (NavMeshSurface) 3. 횃불 상호작용 만들기 (AnimationCurve) 1. 이동 로직 수정하기 캐릭터가 목표 지점으로 이동할때, 이동하는 방향이 아닌 도착지점을 바라보고 이동하는 문제점이 있었습니다. Navigation 으로 목표위치를 지정 해주고, 캐릭터의 방향을 단순히 목표위치에서 현재위치를 뺀 값을 노멀라이즈 해준 것으로 캐릭터의 방향을 결정 했기때문이었습니다. 또한 캐릭터의 행동을 UI를 통해 통제 할 것이기 때문에 마우스 클릭으로 목표위치를 정한뒤 바로 움직이는게 아닌 모든 행동이 끝났을때 사용자가 엔터키를 누르면 움직이게 만들 것 입니다 . 그래서 Navigation 에..
-
10주차 - 개인 심화 3D(Navigation, 이동 경로 시각화 하기)Unity/Unity 스파르타 2024. 2. 20. 21:14
1. 플레이어 이동 Navigation으로 로직 바꾸기 2. 이동 경로 시각화하기 1. 플레이어 이동 Navigation으로 로직 바꾸기 마우스 클릭으로 목표지점으로 이동만 하는 단순 로직은 중간에 장애물을 만나면 장애물을 피해 목표위치에 도달할 수 없음으로, 알고리즘을 통한 최단경로를 찾는 걸로 로직을 수정해 줘야 했습니다. 일일이 A* 알고리즘을 구현할 필요없이 이미 Navigation에 구현되어 있음으로 이를 사용해 플레이어의 이동 로직을 수정해 줍니다. 2. 이동 경로 시각화하기 이동 경로는 LineRenderer을 통해 그려줄 것 입니다. NavMeshAgent 의 path.corners 를 사용해 캐릭터의 이동경로를 배열로 받아와 이를 사용해 이동경로를 그려줍니다. 플레이어가 움직일 경우 Fi..