적이 하나밖에 없는 게임은 흔하지 않다.
뭐 플래피버드 같이 심플하면서 대박을 칠 수 있는 게임이면
베스트겠지만 세계적 레벨의 창의성이 없다면
여러가지 적을 다양하게 구현하는 것을 피할 수 는 없을 것이다.
처음에는 일단 AI를 잘게 쪼개는 것 부터 시작할 것이다.
현재 AI는 다음과 같은 행동을 한다.
![](http://img2.ruliweb.daum.net/mypi/gup/a/123/3/o/2915015380.jpg)
현재 AI자체가 Virtual로 되어 있어서 override할 수 있게 만들어 놓긴 했다.
하지만 대부분의 경우 적은 정해진 길을 따라 이동할 것이다.
새로운 적을 만들때 이 틀을 부시지 않고 부분적으로 새로 정의할 수 있도록
다음과 같이 AI를 다시 만들었다.
![](http://img2.ruliweb.daum.net/mypi/gup/a/123/3/o/2915015391.jpg)
달라진건 별로 없고 AI의 각 기능들을 함수화 시켜서 virtual을 달아 놨을 뿐이다.
InitAction이라는 함수같이 없는 곳에 만들어둔 함수도 있긴하다.
이렇게 만들어 놓으면 자식클래스에서는 AI를 새로 디자인 할 필요 없이
이동하는 것을 바꾸고 싶다면 moveToDest를 Override해서 만들기만 하면
새로운 적을 만들 수 있을 것이다.
새로운 적 스크립트를 만들고 EnemyBasic을 상속 받은 다음
override 예약어를 적어 보자 C#에서 override를 친후 스페이스바를
한번 누르면 어떤 것을 override 할 수 있는지 알려준다.
![](http://img2.ruliweb.daum.net/mypi/gup/a/123/3/o/2915015990.jpg)
방금 만들었던 moveToDest를 다음과 같이 다시 만들었다.
한꺼번에 이동하던 것을 거리1만큼 이동하고 0.4초를 쉬고를 반복하게
했다.
![](http://img2.ruliweb.daum.net/mypi/gup/a/123/3/o/2915015393.jpg)
새로운 적이 어떻게 동작하는지 새로운 맵을 만들어서 보자
맵은 간단하게 5라인을 일직선으로 만들고
이벤트 스크립트는 제작중임으로 -_- 디버그 코드로
각각의 스타트 포인트에서 적을 리젠시키도록 했다.
5개의 라인중에서
1번라인은 ovrride해서 새로운 이동방식을만든 적을 띄었고
2번라인은 EnemyBasic 그대로인 적을 생성했다.
소스코드 : https://github.com/geniikw/CubeRushRoot-whole-Project-/