본문 바로가기
개발자가 되어보자..공부공부/개발 일지

3D 랜덤 디펜스 개발 일지 1. 맵 생성, 영웅 생성, RTS식 영웅 이동

by 묭묭이와소담이 2023. 1. 11.
반응형

< 현재까지 사용 된 스크립트 >

  스크립트 명 내용 스크립트 위치
영웅 관련 HeroController.cs 영웅 애니메이션, RTS선택 표시, NavMeshAgent 적용 등
가장 기본이 되는 영웅 스크립트.
Hero Prefabs
RTSHeroController.cs RTS 시스템에 대한 함수가 생성되는 스크립트.

List<HeroController> selectedHeroList
영웅을 선택하면 위 List에 선택한 영웅데이터를 저장.
선택을 취소하면 위 List에서 데이터를 제거.

선택되어 있는 영웅만 움직이는 함수 작성.
GameManager
MouseClick.cs Raycast를 이용하여 마우스 클릭 로직 구현.

레이어가 Hero인 오브젝트를 마우스 좌클릭하였을 때, RTSHeroController의 선택 함수 실행. 그 외에는 선택취소 함수 실행.

마우스 우클릭하였을 때, 선택된 플레이어의 이동함수 실행.
GameManager
HeroSpawnManager.cs 영웅 프리펩을 생성.

List<HeroController> heroList
생성 될 때마다 위 List에 생성 된 영웅 데이터 저장하고, heroList를 return 시킴.
GameManager
AttackHero.cs 영웅이 적을 공격하는 로직 생성. Hero Prefabs
BulletHeroA.cs 영웅이 적을 원거리 공격할 때의 총알 함수. Bullet Prefabs
적 관련 Enmey.cs waypoint 따라 적 자동 이동, 적 체력감소 로직 생성.
datasheet에서 여러 Enemy에 대한 데이터를 한 번에 가져옴.
Enmey Prefabs
Waypoints.cs waypoint 자식 함수를 배열에 저장하여 static 변수로 설정. WayPoint
게임 관리 GameManager.cs 적 생성, 스테이지, 기본적인 UI Text 함수 생성. GameManager
DataManager.cs Excel로부터 Data를 가져 올 때, Excel 데이타와 동일하게 변수를 생성해주는 스크립트.  
dataSheet.cs Excel Data를 List<DataManger>로 만들어 줌.  

 


 

1. 맵 (필드, 배경) 생성

- Sanpping 이용하여 필드 생성.

- Main Camera에 SkyBox 컴포넌트 생성.

Material을 생성하여 Shader를 SkyBox/6 sided 로 변경 후, SkyBox에 넣어주면 됨.

 

 

 

2. 영웅 생성

- HeroSpawnMnager.cs 에 작성.

- List<HeroController> heroList 를 생성.

- Addhero() 함수를 생성하고, 내부에 Instatiate로 영웅 프리펩을 생성.

- 영웅이 생성될 때마다 heroList에 Add(추가).

- 영웅 생성 버튼 UI 생성.

 

 

 

3. 영웅 캐릭터 이동 구현

1) NavMesh 적용.

- NavMesh를 사용하기 위해서 필드를 Static으로 처리하고, Windows - AI - Nevigation 에서 Bake 실행.

- NavMesh의 SetDestination()을 이용하여 플레이어를 움직이는 함수 생성.

 

2) 마우스 좌클릭 - 영웅 선택 - 마우스 우클릭 - 이동

- 3개의 스크립트를 사용.

- HeroController.cs에서 영웅 Move함수 생성.

Vector3 targetPos를 받아와서 SetDestination(targetPos) 로 이동 시킴.

- RTSHeroController.cs에서 선택 된 영웅만 움직이도록, selectedHero LIST에 저장된 HeroController를 이동시키는 함수 생성.

- 마우스 우클릭으로 TargetPos 설정.

 

 

반응형

댓글