▶️ 문제 상황 현재 졸업프로젝트에서 강화학습을 이용한 자동 주차 시뮬레이션을 구현하려고 한다. 시뮬레이션 환경은 Unity로, 강화학습 모델은 Python(Pytorch)을 이용해 구현할 예정이다. 내가 이번 주차에 맡은 역할은 Unity로 주차장 시뮬레이션 환경을 개발하는 것이다. 우리는 강화학습의 매 에피소드 마다 새로운 주차 환경을 제공함으로써, 다양한 환경에서 자동차가 주차를 학습할 수 있도록 해야 한다. 그렇기 때문에 매 에피소드 마다 주차 환경을 변경해주는 환경을 구현하고자 한다. 우리는 3가지 주차 방식(평행 주차, 전방/후방 주차)에 따라 어느 방식이 가장 효율적인지 확인해야 하기 때문에, 모든 주차 방식을 시행할 수 있는 환경을 만들고자 한다. ▶️ 구현 방법 먼저 아래와 같이 시뮬레이..
게임오브젝트 삭제 방법 게임오브젝트 삭제 : Destroy() Destroy(); 오브젝트 삭제 함수로 매개변수에 입력되어 있는 오브젝트 or 컴포넌트를 삭제한다. 게임을 진행하는 도중 플레이어의 공격을 받아 사망하는 적 오브젝트, 플레이어와 부딪혀 플레이어가 획득하게 되는 아이템 오브젝트와 같이 게임에서 영구적으로 사라져야 할 때 이용 웬만해서 Destroy()를 이용해 컴포넌트를 삭제하는 것보다는, playerObject.GetComponent().enabled = false; 와 같이 컴포넌트를 삭제하지 않고 꺼두는 것을 권장한다. 다음은 Destroy()를 이용해 playerObject에 존재하는 PlayerController 컴포넌트를 삭제하는 코드이다. using UnityEngine; pub..
게임 내의 오브젝트를 복제해서 새로운 적을 생성하면 안 되는 이유? 게임 내에 원본으로 사용 중인 적이 사라졌을 시, 복사할 원본이 없어서 에러가 발생할 수 있다. 따라서 원본 오브젝트는 파일로 보관하여 사용하는 방식, 즉 프리팹을 이용해야 한다. 프리팹(Prefab)이란? 게임(Hierarchy View)에 존재하는 게임오브젝트를 Project View에 파일로 저장해둔 것 프리팹(Prefab) 생성 1. 원하는 형태로 게임 오브젝트를 꾸민다. 2. Hierarchy View의 게임오브젝트를 Project View로 드래그&드롭한다. 3. Hierarchy View에 있는 게임오브젝트를 삭제한다. 게임오브젝트 복제 방법 게임오브젝트 복제 : Instantiate(원본 게임오브젝트) Instantiate..
Rigidbody2D : 2차원 공간에서 오브젝트의 물리와 중력을 담당하는 컴포넌트 Collider2D : 2차원 공간에서 오브젝트의 충돌 범위를 나타내는 컴포넌트 코드 설명에 앞서... 게임오브젝트의 컴포넌트 정보에 접근하는 방법 1. 자신이 게임오브젝트의 컴포넌트 정보에 접근하는 방법 GetComponent(); 2. 자신이 소속되지 않은 게임오브젝트의 컴포넌트 정보에 접근하는 방법 게임오브젝트.GetComponent() 와 같이 코드를 작성하여 게임오브젝트의 컴포넌트에 접근가능하다. 두 오브젝트가 충돌하려면? 서로 다른 두 오브젝트가 충돌하기 위한 필수 조건 1. 두 오브젝트 모두 충돌 범위인 Collider2D 컴포넌트를 가지고 있어야 한다. 2. 둘 중 하나 이상의 오브젝트가 물리 처리를 담당하..