2D 몬스터 AI

Intro

  • 코루틴을 이용한 몬스터 AI

몬스터 오브젝트 생성

image

캐릭터와 마찬가지로 부모 오브젝트아래에 몬스터 스프라이트를 넣고

부모 오브젝트에 필요한 컴포넌트들을 추가

cha

캐릭터의 Tag를 Player로 바꿔줌

스크립트 추가

image2

필요한 변수를 선언

image3

ChageMovement를 시작시키고

ChageMovement 코루틴은 랜덤으로 Flag를 발생시키고

movementFlag가 0이면 정지상태 1이면 이동하도록 반복된다.

image4

트리거 함수 3개를 만들어

트리거안에 Player캐릭터가 들어오게되면 isTracing상태를 True로 만들어

쫓아오도록하고 트리거를 나가게되면 isTracing상태를 False로 한뒤

다시 ChangeMovement코루틴을 실행하게함

image5

Move 함수에선 몬스터의 움직임을 정의했으며

트리거 함수로인해 isTracing 상태가되면 캐릭터와 몬스터의 위치를 비교해

몬스터가 오른쪽에 있으면 dist값을 Left로 변경해주어 왼쪽방향으로 따라가게하였고

그 반대는 오른쪽방향으로 따라가게하였습니다. 또한 isTracing상태가 false이면

코루틴 상태이므로 Flag에 따라 랜덤으로 어떤 방향으로 움직일지 정의

그 외에 부분은 변수를 통해 이동과 Sprite Flip을 정의

전체 코드

몬스터 추락방지

block

몬스터의 이동중 추락을 막기위해

빈 오브젝트에 2D Box Collider 컴포넌트를 추가해 양쪽에 배치

layer

오브젝트의 Layer을 MonsterBlock으로 변경

setting

프로젝트 세팅 - Physics 2D 세팅에서 Layer Collision Matrix에서

MonsterBlcok 레이어는 Player를 무시하도록해 플레이어를 충돌에서 제외

실행 결과

image6

참고자료

관련 블로그

태그:

카테고리:

업데이트:

댓글남기기