전체 글 108

팀 프로젝트 골드메탈 슈팅게임 [#2]

이번엔 팀원과 회의해서 나는 오브젝트풀링을 담당하고 나머지 팀원들 (1명 늘었다)는 보스 공격패턴과 아이템을 담당하기로 하였다. 먼저 풀링을 하기 전에 씬전환을 먼저 만들어주기로 했다. using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;namespace Chaosmoney8{ public class AppMain : MonoBehaviour { private void Awake() { DontDestroyOnLoad(this.gameObject); } private void Sta..

2D 콘텐츠 제작 2023.10.16

팀 프로젝트 골드메탈 슈팅게임 [#1]

↑동료(1명)와 함께 svn을 사용하여 골드메탈님의 슈팅게임을 만들어 보기로 했다. 먼저 팀원과 R&D를 해서 어떤 걸 할지 정했다. 그리고 팀원은 애니메이션, 배경 스크롤링 등을 담당하였고 나는 캐릭터/적기의 이동, 총알생성, 충돌반응을 담당하였다. 먼저 플레이어의 공격과 이동은 코루틴으로 작성하였고 카메라 메인의 뷰포트 함수를 이용하여 플레이어가 화면밖으로 나가지 않도록 제한했다. 이 부분은 전에 써놓은 코드가 있어서 그렇게 오래 걸리지 않았다. using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Chaosmoney8 { public class Player : MonoBehaviour { [Se..

2D 콘텐츠 제작 2023.10.13

좀짓막(좀비 집짓고 막기) [#9] - 세부 조정 및 정리

맵을 좀 더 추가해주었다. z축으로 설치되는 벽을 추가 하고 바리케이드에 기능을 넣어 줬다. using System.Collections; using System.Collections.Generic; using UnityEngine; using static UnityEngine.GraphicsBuffer; public class CameraCtrl : MonoBehaviour { private GameObject target; private float scrollSum = 5; void Update() { float scroll = Input.GetAxis("Mouse ScrollWheel") * 15f; scrollSum -= scroll; float scrollSize = Mathf.Clamp(scr..

3D 콘텐츠 제작 2023.10.11

좀짓막(좀비 집짓고 막기) [#8] - 게임시스템 만들기

1. 에러 해결 이번에는 재화를 만들어서 오브젝트를 만드는데 돈을 소비하도록 할 것이다. 그 전에 캐릭터가 시간이 지나면 멈추는 문제를 수정해야 할 것 같다. A* 큐에 너무 많은 패스요청이 쌓이는게 문제 같아서 디버그로 큐의 갯수를 한번 찍어 보았다. 아무래도 문제의 원인은 패스를 담는 큐를 하나로 공유하기 때문에 요청이 너무 많이 쌓여서 이런 문제가 발생하는 것 같았다. 좀비를 50마리로 줄여서도 실험해봤는데 50마리 일때는 큐의 갯수가 정상적으로 유지 되었다. 그러다 좀비를 클릭했는데 큐의 갯수가 갑자기 증가하였다. 아무래도 처리 못하는 큐 작업을 만날경우 Dequeue가 작동하지 않아서 뒤의 작업이 밀리는 것 같았다. 좀비를 1마리로 해서 실험해봤다. 이제 처리하지 못하는 큐 작업을 실행하지 못하..

3D 콘텐츠 제작 2023.10.10

좀짓막(좀비 집짓고 막기) [#7] - 오브젝트 풀링

몰려드는 좀비를 구현하기 위해서 좀비를 계속 생성하는 방법도 있지만 물량이 많아지면 렉이 걸릴 가능성이 높아지므로 오브젝트 풀링을 이용해서 좀비를 생성해놓은 다음 오브젝트를 활성 비활성화 시켜서 리소스를 재사용하기로 했다. 그전에 시험삼아 좀비를 200마리 정도 코드로 생성해서 풀어놓아 보았다. 그다음엔 SpawnPointGroup을 만들고 빈 point 오브젝트를 9개 배치해주었다. 게임매니저에 spawnPoints Transform배열을 정의하고 Point들을 할당해주었다. 그리고 기존에 쓰던 코드를 CreateMonster메서드로 정리하고 InvokeRepeating함수를 이용해 0.2초마다 호출해주기로 하였다. private void CreateMonster() { int random = Rand..

3D 콘텐츠 제작 2023.10.06

좀짓막(좀비 집짓고 막기) [#6] - 공격/이동/설치기능 완성

오늘은 좀짓막 오브젝트에 필요한 기능을 추가해서 오브젝트들이 서로 상호작용 할 수 있도록 공격이나 이동등의 기능을 추가할 생각이다. 그전에 저번 포스팅에서 다 만들지 못한 설치기능을 마저 완성할 생각이다. 벽을 설치하는 기능까진 완성했었는데 벽의 경우 2칸이라 터렛이나 수리로봇을 설치하기엔 칸수가 맞지 않다 그래서 1칸을 설치하는 기능을 만들고 Drag의 DefaultPos의 위치를 활용해서 설치 오브젝트를 판정할 생각이다. 그걸 위해서 Debug를 찍어서 오브젝트 아이콘이 있는 defaultPos의 좌표를 기록해주었다. 바리게이트 - 1620 / 300 터렛 - 1740 / 300 수리로봇 - 1860 / 300 그 후 게임매니저에 바리게이트 터렛 수리로봇으로 enum타입을 만들고 기존에 바리게이트만 ..

3D 콘텐츠 제작 2023.10.05

좀짓막(좀비 집짓고 막기) [#5] - 목표물 타게팅/설치 기능 만들기

1. 목표물 타게팅 후 공격 이번 시간엔 터렛이 자동으로 목표물을 타게팅해서 총알을 발사하는 기능을 구현할 생각이다. 그걸 위해서 Physics.Overlapsphere를 사용하여 좀비의 콜라이더를 검출하고 콜라이더가 검출 될 경우, 가장 가까이 있는 좀비를 공격하는 알고리즘을 먼저 구현할 생각이다. 그걸 위해서 일단 콜라이더가 정상적으로 검출되는지 먼저 찍어 보았다. 그 후엔 포문을 돌려서 콜라이더가 있을 시 좀비와의 거리가 정상적으로 출력되는지 찍어 보았다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Turret : MonoBehaviour { // Start is called b..

3D 콘텐츠 제작 2023.10.04

좀짓막(좀비 집짓고 막기) [#4] - 길찾기 알고리즘 이동에 적용

내가 참고한 사이트에서는 경로탐색을 PathRequestManager에 맡겨서 큐에 넣은 다음 순차적으로 처리하는 방법을 사용했다. 다른 사이트도 참고해봤는데 다들 큐로 사용하는 방식을 사용했다. https://github.com/olokobayusuf/3D-A-Star-Pathfinding/blob/master/Pathfinding/PathRequestManager.cs 왜 큐를 사용하는지 궁금해서 챗gpt님에게 물어봤다 그래서 일단 같은 방법으로 PathRequestManager를 작성해보았다. using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PathReques..

3D 콘텐츠 제작 2023.09.27

좀짓막(좀비 집짓고 막기) [#3] - A* 길찾기 알고리즘 R&D

캐릭터와 다른 이동기능이 있는 오브젝트에 A*를 적용하기 위해서 A* R&D를 하기로 했다. A*는 시작노드에서 현재노드까지의 가중치 + 현재노드에서 목표노드까지의 가중치를 더한 값을 바탕으로 길을 찾는 알고리즘으로 다음 노드로 이동할때마다 가중치를 더한 값이 가장 적은 노드로 이동한다. A*의 이해에는 다음 블로그들을 참고 했다. https://recall.tistory.com/40 A* 알고리즘(A star algorithm) grid map 개념 및 구현 A* algorithm이란? A* 알고리즘(A* star algorithm)은 주어진 출발 노드(node)에서부터 목표 노드(node)까지 가는 최단 경로를 찾아내는 그래프 탐색 알고리즘 중 하나이다. 주어진 지도(map)에서 출발 지점부 reca..

3D 콘텐츠 제작 2023.09.26

좀짓막(좀비 집짓고 막기) [#2] - 건축물 설치 R&D

저번엔 간단하게 맵을 구성하는 것까지만 했었고 이번 시간엔 A* R&D를 한다음 캐릭터의 이동을 구현하려고 했었는데 2일차의 건축물 설치 R&D를 먼저 하는게 더 효율적일 것 같아서 순서를 바꿔 설치 R&D를 먼저하기로 했다. 그걸 위해서 우클릭을 했을때 게임매니저로부터 좌표를 받아서 캐릭터를 이동시키는 코드를 작성하였다. private void Update() { if(Input.GetMouseButtonDown(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(ray.origin, ray.direction * 5f, Color.red , 3f); RaycastHit hit; if(Physics.Raycast..

3D 콘텐츠 제작 2023.09.25