전체 글
-
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(); - ..
-
11주차 - 콤보 공격 구현하기 (2D)카테고리 없음 2024. 2. 28. 20:54
1. 준비 2. 애니메이터 조작 1. 준비 두개의 공격 애니메이션을 준비합니다. 공격 위치는 폴리곤 콜라이더로 잘 조절해 줍니다 Sub-State machine 으로 공격 애니메이션을 그륩화 해주었습니다. 두개의 공격 로직을 아래 사진처럼 연결해줍니다. 2. 애니메이터 조작 애니메이션의 Exit Time 과 Transition Duration을 사용해 아주 쉽게 구현할 수 있습니다. Exit Time 은 종료 시점을 제어하는 매개변수로 상태를 종료하기 전에 특정한 시간을 기다릴 수 가 있습니다. 예를 들어 A에서 B 상태로 전환하는 트랜지션의 Exit Time을 0.7 로 설정한다면, 상태 A의 애니메이션이 70%정도 재생되고 나머지 시간동안 트랜지션의 조건을 평가해 충족되면 B 애니메이션으로 넘어갑니다..
-
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 에..