목록Unity ToyProject (23)
개발일기
에코 서버 구성 & 흐름 에코 서버란? 클라이언트가 전송해 주는 데이터를 그대로 되돌려 전송해 주는 기능의 서버를 뜻한다.다음은 서버와 클라이언트의 통신하는 순서를 나타낸 것이다. 서버접점을 구한다. (접점 = Ip 주소 + Port 번호) 리스너를(소켓) 생성하고 리스너에 접점을 바인드한다. (+ 최대 Listen 수도 설정)Listen을 시작한 이후, 접속한 클라이언트를 Accept하고 Session을 만들어서 대응시킨다. (세션 = 연결 정보)클라이언트에게 보낼 정보를 Send하거나 받은 정보를 Receive하여 처리한다.클라이언트클라이언트 소켓을 생성한다.접속할 접점 정보를 구하고 Connect를 시도한다.서버의 리스너에 의해 Accept되면 Send와 Receive를 하며 통신한다.서버와의 통신..

1. Link깃허브 링크 : https://github.com/kimchosungjun/MyProject_PlatformerGame.git 플레이 영상 : https://youtu.be/x59CBxRP5gE 2. 구현한 기능1) 음향 조절 기능아래는 구현한 Audio Mixer를 이용하여 구현한 음향 조절 기능입니다. 사운드의 종류마다 다르게 조절이 가능하게 만들었습니다. 오디오 아이콘을 누르면 음소거를 시킬 수 있습니다. 2) Video Player를 이용한 튜토리얼 기능 구현 아래는 구현한 Video Player를 이용하여 구현한 튜토리얼입니다. 영상 자료를 활용하여 게임에 대한 이해를 쉽게 할 수 있도록 도왔습니다. 3) FSM을 이용한 플레이어 조작 플레이어의 상태들을 정의하고 상태가 변화..

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. Wilson wilson using System.Collections; using System.Collections.Generic; using UnityEngine; public class Wilsons : Maze { List notUsed = new List(); public override void Generate() { //create a starting cell int x = Random.Range(2, width-1); int z = Random.Range(2,depth-1); map[x, z] = 2; while (GetAvailableCells() > 1) RandomWalk(); } int GetAvailableCells() { notUsed.Clear(); for(int z=1; ..

1. Maze 기존에 작성한 Maze Script에 이웃의 통로 숫자를 확인하는 메서드를 추가합니다. public int CountSquareNeighbours(int x, int z) // 상하좌우 { int count = 0; if (x = width - 1 || z = depth - 1) return 5; if (map[x - 1, z] == 0) count++; if (map[x + 1, z] == 0) count++; if (map[x, z - 1] == 0) count++; if (map[x, z + 1] == 0) count++; return count; } public int CountDiagonalNeighbours(int x, int z) // 대각선 { int count = 0; if..

1. Player 이동 PlayerMove란 스크립트를 다음과 같이 작성 후, 게임 오브젝트에 부착시키면 방향키로 좌,우로 이동이 가능해집니다. public class PlayerMove : MonoBehaviour { Rigidbody2D rb; private float xInput; [SerializeField] float moveSpeed; void Awake() { rb = GetComponent(); } void Update() { Movement(); CheckInput(); } void Movement() { rb.velocity = new Vector2(xInput * moveSpeed, rb.velocity.y); } void CheckInput() { xInput = Input.GetA..
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 ..