Invoke()는 지정된 시간만큼 해당 함수 시작 시간을 지연시켜주는 함수이다.
CancelInvoke() 해당 함수의 Invoke를 중지시킨다.
nextMove는 다음 움직임을 표현하면서 애니메이터의 애니메이션을 정해주는 변수이다.
sprite는 적이 움직일 때 바라보는 방향을 바꿔주기 위해서 선언한 것이다.
rigid는 적을 움직이게 하기 위해 선언한 것이다.
anim은 적이 움직일 때 애니메이션을 바꿔주기 위해서 선언한 것이다.
rigid, anim, sprite는 모두 초기화를 위해 작성되었다.
Invoke("Move", 1f)는 적이 생성된 후에 Move라는 이름을 가진 함수를 1초 뒤에 실행시키라는 것을 나타낸다.
Think 함수를 실행시켜준다.
적의 이동 속도를 nextMove만큼으로 선언해준다.
그리고 적의 위치에서 0.5만큼 앞에 위치한 좌표를 구한다.
구한 좌표에서 아래쪽 방향으로 0.5만큼의 길이를 가진 rayHit를 생성하고 Ground라는 레이어를 가진 오브젝트를 가져온다.
만약 rayHit에 감지되는 오브젝트가 없다면 Turn함수를 실행시켜 적의 방향을 바꿔준다.
nextMove에 -1을 곱하여 다음 움직임을 다음 방향으로 바꿔주고, 적의 스프라이트를 nextMove가 1이라면 true로 nextMove가 1이 아니라면 false로 바꿔준다. 그리고 CancelInvoke("Move")를 사용하여 진행되고 있는 Invoke를 중지시켜주고, 다시 Invoke("Move", 2f)를 사용하여 새로운 Invoke를 만들어준다.
nextMove를 -1, 0, 1 중에 하나를 랜덤으로 선택하여 바꿔준다.
그리고 애니메이터의 walkSpeed라는 int형 변수에 인자로 넘겨준다.
만약 nextMove가 0이 아니라면 움직이고 있다는 것을 나타내므로 스프라이트를 뒤집어준다.
그리고 Invoke 함수를 사용하여 2초 뒤에 다시 Move()가 호출되도록 한다.
'Unity' 카테고리의 다른 글
[Unity] Camera를 이용한 게임 화면 크기 구하기 (0) | 2020.04.06 |
---|---|
[Unity] TouchPhase를 사용한 모바일 터치를 사용한 플레이어 움직이기 (0) | 2020.04.05 |
[Unity] 오브젝트에 능력 넣어주기 (0) | 2020.03.28 |
[Unity] Prefab을 이용한 랜덤 뽑기 (0) | 2020.03.27 |
[Unity] Trigger, Sprite를 이용한 오브젝트 비활성화 (0) | 2020.03.26 |