목록Unity ToyProject/Defence (7)
개발일기

1. Link깃허브 링크 : https://github.com/kimchosungjun/GhostDefence.git플레이 영상 : https://youtu.be/KTA90yH4Qf0 2. Issues - Data Driven (Use Scriptable Object & Json, Load Data from Google Spread)- Use A* Algorithm (Enemy Pathfinding)- Load Scene ( Loading : asynchronous)- Tower Automatic Attack System - Shader Graph (Dissolve) 3. Function 1) 데이터 저장 & 로드 기능플레이어의 정보를 생성, 삭제할 수 있으며 이름 중복을 방지했습니다.플레이어가 클리어..
1. 구현 경로를 찾거나 설정하는 것에 대한 내용은 따로 게시물을 만들어 올려두었습니다. 다음은 구현된 내용입니다. 타워에 인식 범위를 주고 그 범위 내에 적이 있다면 Particle로 구현된 공격을 하게 됩니다. 적은 하나만 만들었기에 간단하게 오브젝트 풀링 코드를 작성했습니다. 돈을 관리할 Bank란 GameObject를 생성하여 돈을 관리했습니다. 돈이 0원 이하가 되면 패배하도록 설정했습니다. 적이 끝에 도달하면 일정양의 돈을 잃어버리게 설정했으며, 적이 죽으면 HP가 1칸 늘어서 재생성 되도록 했습니다. Ver.2) 타워가 경로를 막으면 새로운 경로를 찾도록 했습니다. 경로를 직관적으로 보기 위해 C키를 누르면 최적경로가 빨강색으로 보이도록 구현했습니다. 2. 실행 영상 경로를 설정한 Ver.1..
1. Node 우선 타일의 정보를 저장할 틀인 Node class를 작성합니다. public class Node { public Vector2Int coordinates; public bool isWalkable; public bool isExplored; public bool isPath; public Node connectedTo; public Node(Vector2Int coordinates, bool isWalkable) { this.coordinates = coordinates; this.isWalkable= isWalkable; } } 2. Grid Manager 그리고 타일의 정보를 저장/관리하는 Grid Manager를 작성합니다. using System.Collections; using ..

1. BFS BFS는 시작 노드를 큐에 넣고 시작합니다. 그 후는 큐에서 나온 노드의 인접 노드를 큐에 삽입하고, 더 이상 삽입할 노드가 없다면 큐에서 다시 노드를 빼오는 것을 반복합니다. 더이상 큐에서 빼올 노드가 없다면 종료합니다. 기본적인 코드는 다음과 같습니다. (백준 1260번을 풀 때 사용한 코드입니다) vector vec[10002]; bool visit[1002]; void bfs(int temp) { queue q; q.push(temp); visit[temp] = true; while (!q.empty()) { int x = q.front(); q.pop(); result_bfs.push_back(x); for (int i = 0; i < vec[x].size(); i++) { if (..

1. WayPoint 앞에서 생성한 타일에 삽입할 WayPoint Script를 작성합니다. public class WayPoint : MonoBehaviour { [SerializeField] Tower towerPrefab; [SerializeField] bool isPlaceable; public bool IsPlaceable { get { return isPlaceable; } set { isPlaceable = value; } } void OnMouseDown() { if (isPlaceable) { bool isPlaced = towerPrefab.CreateTower(towerPrefab, transform.position); isPlaceable = isPlaced; } } } 길 타일에는..

1. 타일 생성 Grid에 관련된 설정을 끝냈으니, 이를 이용한 타일을 생성해보겠습니다. 우선 빈 게임 오브젝트를 생성하고 그 밑에 타일 Mesh와 TMP를 넣어줍니다. TMP는 좌표를 나타낼 것이기에 TMP가 Mesh위에 놓아 좌표가 안보이는 현상을 방지해줍니다. 그리고 BoxCollider를 삽입해주면 타일 프리팹 생성은 끝입니다. 타일을 생성했으니 타일의 좌표를 나타내는 스크립트를 작성하겠습니다. [ExecuteAlways] [RequireComponent(typeof(TextMeshPro))] public class CoordinateLabeler : MonoBehaviour { TextMeshPro label; public int UnityGridSize = 10; Vector2Int coord..

1. Grid Snap Grid Snap창을 눌러 Size를 조정하고, 눌러서 활성화 시키면 해당 Size만큼 뚝뚝 끊기며 물체가 이동하게 됩니다. 이를 활성화 시키지 않는다면 평소대로 물체가 마우스를 따라 이동하게 됩니다. 2. Increase Snap 앞에서 Grid Snap을 활성화 시키지 않는다면 마우스를 따라 움직이게 되는데 Ctrl 키를 누른 상태로 물체를 움직인다면 Increase Snapping의 Move의 크기 만큼 뚝뚝 끊기며 이동을 하게 됩니다. 즉 Ctrl키를 누른 상태로 이동시키면 Increase Snapping의 Move 크기 만큼 이동하게 되고, 그게 아니라면 마우스를 따라 이동하게 됩니다. 만약 Grid Snap이 켜져 있다면 Grid Snap의 크기 만큼 이동하게 되고, 이..