K-digital traning/Final Project 24

Gazzlers 개발일지 - Map 수정(with CurvedWorld)

현재 map의 분위기가 단조롭고 평화로워 게임컨셉과는 다소 이질적이다는 피드백을 받아 이를 수정해보고자 한다. 우선 분위기를 저해하는 트리를 제거하였다. StructureManager 스크립트에서도 트리를 설치하는 메서드는 제거하였다. 대애애애충 건물이 따닥따닥 붙어있는 느낌을 내면 괜찮지 않을까 싶어 대충 만들어본 움짤. 다른 모양의 건물을 몇 개 더 새워서 요런식으로 설치되도록 구현하면 어떨까 싶댜. 건물은 대애충 크기별로 해놓고 구현해보려는즁... 1. 중간따리(?) 건물 따닥따닥 붙여 설치하기 나오기는 하다만 나무로만 박아놔서 미쳐 못느꼈었던 요 끄트머리 부분이 눈에 자꾸 거슬림,,,,,(특히 VR기기를 착용했을 때 더더욱,,,) 그래서 쓰게 된 CurvedWorld 먼저 CurvedWorld P..

Gazzlers 중간점검

기존 일정 - 발표 시점~12/8 : 적 이동 구현 ->발표시점~12/4 : 적이 player를 따라오는 부분 구현 12/5~12/8 : 적 장애물 회피 구현 - 12/11~12/15 : 게임로비씬 ui 구현 But,,,, 실제로는 적 이동 구현에만 2주가량을 써버리고 말았다... 실제 일정 - 적 단순 앞으로 이동 + 처음 생성 시 랜덤스폰 ->3일 - 왜 도전했는지 모를 휠콜라이더(결국 실패) ->3일 - 적의 장애물 회피 ->약 일주일 1. 적 이동 -url : https://made-myblog.tistory.com/61 2. 적 랜덤 스폰 -url : https://made-myblog.tistory.com/62 3. 휠 콜라이더(실패작) -url : https://made-myblog.tist..

Gazzlers 개발일지 - Enemy 장애물 회피

일단 wheel collider를 떼기로 결심하였으니 wheel collider를 제거하고 기존 스크립트도 수정해보쟈. WheelCollider Object를 제거 enemy에 부착된 RigidBody의 velocity와 rotation 값을 조절하는 방법으로 변경. using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class Enemy1Move : MonoBehaviour { private KeyValuePair Target; private bool isReady; public float moveSpeed = 250f; public float rotSpeed = 25..

Gazzlers 개발일지 - wheel collider

https://coding-of-today.tistory.com/128 [레이싱게임] 휠 콜라이더(Wheel collider) 기본 세팅하기 레이싱게임이나 휠콜라이더를 다루기 위해서는 첫번째로, 차량 오브젝트에 휠콜라이더를 배치해야한다. 매우 기본적이지만 첫걸음을 잘 내딛어야 이후의 과정들이 매끄러워지므로 집중하도록 coding-of-today.tistory.com https://docs.unity3d.com/kr/current/Manual/class-WheelCollider.html 휠 콜라이더 - Unity 매뉴얼 휠 콜라이더(Wheel Collider) 는 지상 차량용 특수 콜라이더입니다. 충돌 검사, 휠 물리 효과 및 슬립 기반 타이어 마찰 모델이 포함되어 있습니다. 휠이 아닌 오브젝트에도 사용이..

Gazzlers 개발일지 - Enemy생성

원작에 의하면 한 화면에서 Enemy가 최대 2마리 생성됨을 확인해볼 수 있다. 한 마리씩 텀을 두고 생성되며 enemy가 일정수량(wave 당 생성되는 enemy 수) 생성될 때까지 2마리씩 화면에 나타난다. 먼저 게임이 시작될 때 텀을 두고 enemy 2마리가 생성되는 부분을 구현해보쟈. TestEnemy1MoveMain의 Enemy1Move 필드를 arr로 바꾸어 2마리를 관리하도록 한다. Start method에서는 arrEnemys를 순회하면서 각각의 enemy에게 접근하여 onChangeTarget 대리자를 선언한다. 그 다음 처음 시작할 때 enemy들의 spawn 위치를 정해주는 CoStartSpawnEnemy를 호출한다. CoSpawnEnemy는 5초 간격으로 각 enemy마다 스폰 위치..

Gazzlers 개발일지 - Enemy 이동(Player 추적)

먼저 enemy가 player 이동 방향대로 움직이도록 구현하였다. 우선 enemy를 요로코롬 설정. Scene은 기존에 했던 MapScene에서 TestEnemy1MoveMain과 위의 enemy를 추가한 형태로 구성해보았다. 일단 enemy의 움직임을 구현하기 위해 SerializeField로 enemy와 enemy가 쫓아야 될 target의 transform을 할당하였다. 쫓는 위치를 랜덤하게 부여하기 위해 Random.Range를 사용하여 임의의 값으로 arrTargetPos에 접근하도록 한 뒤 enemy에게 target의 transform을 전달하였다. UpdateTargetPos에서는 Main으로부터 받은 transform을 자신의 target으로 할당하는 역할을 한다. isReady는 tar..

Gazzlers 개발일지 - Map생성(5)

먼저 나무 생성을 구현해보았다. structure를 따로 관리하기 위해 StructureManager.cs를 생성하여 이곳에 구현하였다. Structure들을 저장해놓은 List들을 Queue로 관리하기 위해 qStructures를 선언하였다. (Queue로 관리하는 이유는 앞선 코드들처럼 먼저 저장한 structure(시야에서 멀어진)를 제거하고 새로 생성하기 위함이다.) Structure를 설치하는 method이다. 현재 tree 설치만 구현한 상태로, tree가 rail을 따라 일정 간격으로 생성되게끔 구현하였다. offset은 position.z 간격(+ position.x 간격)을 xOffset은 LRail 혹은 RRail의 모양에 맞게끔 설치되기 위해 조정되어야 하는 position.x 간격을..

Gazzlers 개발일지 - Map생성(4)

현재 Map생성시 Floor과 Rail 두 가지의 GameObject가 생성되고 있다. 그러나 Map은 이 외에도 게임환경을 구성해줄 건물, 나무 등의 설치물들이 생성되어야 한다. 현재 Rail은 Random하게 생성되고 있으므로 Rail의 위치에 맞게 다른 GameObject들이 생성되도록 구현해야 한다. 우선 소규모의 Structure를 생성해보도록 하쟈. 먼저 Structure를 생산 및 관리해줄 StructurePoolManager 스크립트 및 Structure의 정보가 저장된 Structure 스크립트를 생성하였다. Structure.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public cl..

Gazzlers 개발일지 - Map생성(3)

현재 구현상태에서는 아직 player가 깔아놓은 rail을 따라가지 못하고 있다. player의 경로 이동을 구현하기 위해 각각의 railPrefab에 경로를 지정한 뒤 그 경로를 player에게 전달하여 player가 이를 따라가는 방식으로 구현해보고자 한다. rail 경로 지정 Rail.cs를 새로 작성하고 기존 Script 중의 일부를 수정하는 작업을 거쳤다. +수정 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rail : MonoBehaviour { public enum eType { Left = 0, Middle = 1, Right = 2 } private int value; ..

Gazzlers 개발일지 - Map 생성(2)

바닥 + 레일을 생성하는 코드를 작성해보았다. 바닥은 기존 작성한 코드를 토대로 생성되게 하였고 레일은 objectpooling을 활용하여 생성되도록 구현하였다. TestMapMain.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestMapMain : MonoBehaviour { [SerializeField] private MapController mapController; [SerializeField] private CamMove camMove; // Start is called before the first frame update void Start() { Vector3 ca..