팀 프로젝트 중 발생한 문제
·
📖TIL/🤔발생한 문제와 해결
프로젝트명 : Zombillions 이번 프로젝트는 5인 팀으로 진행한 탑뷰 생존형 타워 디펜스 게임이다.플레이어는 낮에는 자원을 채집해서 방어 타워를 건설하고 밤에는 좀비의 웨이브로부터 HQ 건물을 방어해야 한다.이 사이클을 반복하면서 점차 강해지고 , 자원 관리와 타워 관리가 핵심인 구조로 설계했다.장르 : Top - Down 생존형 타워 디펜스엔진 : Unity ( 2022.3.61f1 )개발 인원 : 5명작업 기간 : 25.10.27 ~ 25.11.03 사전 준비Code Convention코드 일관성 지향변수명 , 메서드명 만으로 기능과 목적 추론 가능할 것권장 변수명 , 메서드명 정리작업 사항 스케쥴러 작성 및 문서화너무 긴 시간 혼자 고민하지 말고 질문하고 소통할 것 TaskGlobal Man..
FSM ( Finite State Machine )
·
🧊Unity Basic/디자인패턴
FSM ( Finite State Machine )FSM 은 "유한 상태 기계" 또는 "유한 상태 자동자" 라고 부른다.FSM : 유한한 개수의 상태를 가지며 , 입력에 따라 상태가 전이되는 모델유한 상태 기계 : FSM 의 직역으로 , 컴퓨터 과학이나 공학에서 널리 쓰이는 용어이다.유한 상태 자동자 : 이론적 컴퓨터 과학 ( 형식 언어 , 오토마타 이론 등 ) 에서는 "자동자" 라는 표현을 사용상태 ( State ) : 객체가 특정 시점에 가지는 행동 또는 모드 ( Idle , Move , Attack 등 )전이 ( Transition ) : 상태 간 이동을 결정하는 조건 또는 이벤트상태 패턴 ( State Pattern ) : 객체의 상태에 따라 행동을 변경하는 디자인 패턴 상태 기계 : 게임 개발에..
251111
·
📖TIL
애니메이션 타입이 레거시일 때코드 작성using UnityEngine;using UnityEngine.InputSystem;public class PlayerMove : MonoBehaviour{ public float moveSpeed = 5f; public float smoothTime = 0.1f; // 입력 부드러움을 결정 private Animation anim; private InputAction moveAction; private Vector2 moveInput; private Vector2 smoothInput; private Vector2 smoothVelocity; private void Awake() { moveAction ..
MVC 패턴
·
🧊Unity Basic/디자인패턴
MVC 패턴 ( Model - View - Controller )프로그램의 구조를 세 가지 역할로 나누는 디자인 패턴이다.주로 유니티나 웹 개발 ( MVC 프레임워크 ) 에서 코드 구조를 깔끔하게 유지하기 위해 사용한다.Model데이터 ( 상태 ) 와 로직을 담당Player의 체력 , 골드 , 경험치 등캐릭터의 실제 능력치View화면 표시 ( UI 등 ) 를 담당체력바 , 점수 , UI , 애니메이션 등캐릭터가 보여지는 모습Controller입력을 받아서 Model 과 View 를 조정키보드 입력 - 캐릭터 이동 처리조종하는 플레이어 자신Controller 가 사용자 입력을 감지└ 키보드 W 키 입력Controller 가 Model 의 데이터를 변경└ playerModel.MoveForward( )Mod..
251110
·
📖TIL
아이템을 드래그 앤 드롭하는 기능을 구현하는 코드 작성using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;// 드래깅을 당할 수 있는 모든 UI 오브젝트들이 들고 있을 내용// 드래깅엔 3가지 스텝이 있다. 드래깅 시작 , 드래깅 중 , 드래그 종료public class Dragging : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{ private Transform originalParent; // 원래 부모 패널 private Image image; private CanvasGroup canvasGroup; void Start() {..
A-Star ( A* )
·
📊Algorithm/탐색
A-Star 알고리즘 ( A* )A-Star 알고리즘은 게임 개발이나 인공지능에서 가장 자주 쓰이는 경로 탐색 알고리즘이다.유니티의 NavMesh 같은 시스템도 기본적으로 A* 의 원리를 기반으로 만들어졌다.이름A-Star ( A* ) 알고리즘목적출발지에서 목적지까지 최단 경로를 찾기특징현재까지의 거리 + 앞으로의 예측 거리를 동시에 고려사용 예시미로 찾기 , 길 찾기 AI , NPC 이동 , RTS 유닛 이동 등자료구조우선순위 큐 ( Priority Queue ) 또는 Open / Closed List 사용 A* 는 각 노드의 점수를 계산하면서 최적의 경로를 탐색한다. 1. 점수 계산식각 노드마다 세 가지 값을 계산한다.f(n) = g(n) + h(n)g(n)시작점에서 현재 노드까지의 실제 비용 ( ..
탐색 알고리즘 ( Search Algorithms )
·
📊Algorithm/탐색
탐색 알고리즘 ( Search Algorithms )C# 에서 탐색 알고리즘은 데이터 안에서 원하는 값을 찾는 방법이다.탐색은 정렬 여부 / 탐색 범위 / 구조 형태 ( 리스트 , 트리 , 그래프 등 ) 에 따라 여러 가지로 나뉜다. 1. 기본 탐색 알고리즘 ( 배열 , 리스트 )데이터가 정렬되어 있는지 여부에 따라 달라진다. 1-1. 선형 탐색 ( Linear Search )하나씩 순서대로 비교하는 가장 단순한 방법정렬되어 있지 않아도 사용 가능BigO : O(n)int LinearSearch(int[] arr, int target){ for (int i = 0; i 1-2. 이진 탐색 ( Binary Search )정렬된 배열에서 중간값을 기준으로 탐색중간값보다 작으면 왼쪽 , 크면 오른쪽..
251109
·
📖TIL
게임을 유저가 플레이 하기 위해 가장 첫 번째 마주하는 기능은 "유저의 입력을 받고 반응하는 것"이다.다양한 플랫폼을 지원하기 위해서는 각 플랫폼의 입력 장치들에 대한 구현을 해야 하지만통일된 기능으로 다양한 입력기기들에 대응하기 위해 유니티에서는 Input System 기능을 지원한다.PlayerInput plrInput;private void Awake(){ plrInput = GetComponent(); foreach(var map in plrInput.actions.actionMaps) { map.Disable(); // 일단 모든 입력을 동시에 받는 상황을 막는다 } plrInput.actions.FindActionMap("Player").Enable();..
251105
·
📖TIL
public class Test : MonoBehaviour{ void Update() { float h = Input.GetAxis("Horizontal"); if(Input.GetKey(KeyCode.A)) { Debug.Log("발사 로직"); } // 기존 : A 키가 눌리면? "공격"을 수행해라 // 변경 : "공격" 을 정의한다. 그리고 이걸 수행하기 위한 키나 버튼을 "등록" // "S" 키가 눌리면 후진해라 // "후진" 을 수행하기 위한 키 지정 }}using System.Collections;using System.Collections.Generic;u..