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

C# 유니티 공부 22 - 3D 쿼터뷰 예제4 (추척 AI 기능 구현, 폭발 이펙트, 상속, 코루틴 등)

by 묭묭이와소담이 2022. 12. 23.
반응형

★ 껍데기 오브젝트 안에 Mesh Objcet 등 핵심 Object가 있는 경우에는, 껍데기 오브젝트의 Transform은 건드리지 말고 내부 핵심 Object들의 Transform 을 수정해야 한다.

( 프리펩을 저장하고 Instantiate() 로 생성 하는 등의 로직을 작성하고 실행하면, 방향과 위치가 이상해지는 이유. )

 

★ 레이어와 태그를 Enemy, EnemyBullet 등 적절하게 사용하여 적 몬스터끼리의 충돌, 그리고 플레이어와의 공격, 피격 효과, 벽과의 충돌 등을 확실하게 구분해주어야 한다.

 

* 수류탄 효과 구현

- 비활성화 상태에서 활성화 상태로 만들어 주는 방식 사용.

- Particle System 사용.

- Corutine 함수 사용.

- RayCasHit 사용하여 몬스터에게 데미지 구현. 

Ray함수 중, Physics. SphereCastAll 사용.

일직선이 아닌 원형으로 오브젝트를 감지함.

 

 

* 몬스터 A.I 생성

- AI 기능은 Nav Mesh Agent 컴포넌트 사용. (스크립트상에서는 Using UnitiyEngilne.AI 를 가져와야함.)

- Windows - AI - Nevigation - Bake

Bake를 통하여 AI가 이동할 수 있는 길을 생성할 수 있음.

(Bake는 Static 상태의 오브젝트에만 생성 가능.)

- 몬스터의 움직임을 감지하는 Collider와 플레이어에게 공격을 가하는 Collider를 2개 생성.

플레이어에게 공격을 가하는 Collider는 비활성화 시켜놨다, Coroutine함수에서 enabled을 이용해 공격 효과 구현. 

 

 

 

* 플레이어 피격

- 캐릭터 오브젝트는 하나의 오브젝트로만 구성되는 경우가 거의 없음.

모든 하위 오브젝트의 MeshRednder에 접근하기 위해서는 아래처럼 호출 및 초기화해주어야함.

 

색을 바꿔줄 때는, 배열의 모든 값을 반복해서 반환하는 foreach 문을 사용.

 

 

* 보스 생성 및 패턴 구현

- 보스는 기존 Enemy를 상속받은 새로운 스크립트 생성하여 사용.

(기존 Enemy에서 보스에 대한 제한이 필요한 부분은 조건문으로 수정 필요.)

- 보스가 발사하는 총알은 Bullet을 상속받은 새로운 스크립트 생성하여 사용.

★ 상속받은 경우에 컴포넌트 초기화는 다시 진행해주어야 함.

- 보스 패턴과 공격은 코루틴 함수 이용.

1) 미사일 발사

- 미사일에 Nav Mesh Agent 포함하여 유도 기능 구현.

- 미사일 속도는 Nav Mesh Agent에서 구현하면 됨. (물리적인 로직 필요 없음.)

 

2) 커지는 투사체

- 오브젝트가 회전하면서 Colider가 땅에 닿는 충격으로 속도가 발생하여 굴러가는 시스템.

(Addforce로 속도를 증가시키려 해보았지만, 플레이어가 있는 방향으로 발사하도록 하는 로직을 구현하지 못하였다.

다른 스크립트에 있던, 보스가 바라보는 시선에 대한 벡터를 가져오면 가능할 것 같긴 하다.)

 

3) 보스 점프 공격

- 보스가 바라보는 방향으로 플레이어를 향해 점프.

- 보스에게도 일반 몬스터처럼 근접공격에 대한 Collider를 따로 만들어서 활성화/비활성화로 공격 구현.

 

 

 


 

 

 

 

반응형

댓글