-
[Unity Engine] 유니티로 타워 디팬스 게임 만들기 - part2 2014.08.14 PM 11:52
2. 타워 구현
타워의 AI를 나누어 생각하면 크게 두가지로 나눌 수 있다.
1. 적을 감지한다.
2. 총알을 쏜다.
적을 감지하는 것은 타워의 지정된 사거리 안에 적이 들어올때
타워가 감지하는 것을 말한다. 가장 단순하게 의사코드를 적으면
for(모든적에 대하여)
if(적이 사거리 안에 들어왔다면)
currentTarget = enemy[n];
이런식으로 적을 수 있을 것이다. 바로 코드를 작성하기 전에
추가적으로 구현해야 될 것을 생각해보자.
- 사거리 안에 적이 여러마리 있을 경우 어떻게 처리를 할것인가.
>>적의 이동거리를 비교하여 더 멀리간 적을 타게팅한다.
- 현재 타겟이 타워의 사거리 밖으로 나갈경우 어떻게 할 것인가.
또는 가리키고 있는 타겟이 죽었다면 어떻게 할 것인가.
>>currentTarget에 null을 넣는다.
이제 다시 코드를 적어보자
for(모든적에 대하여)
if(현재 적이 사거리 안인지 검증함)
currentTarget = null;
for(모든적에 대하여)
if(사거리 안으로 들어왔다면)
if(현재 타겟보다 멀리갔다면)
currentTarget = enemy[n];
대충 된것 같으니 코드를 적어보자
사거리를 계산하는 부분이 중복 되는 약간 이상한 코드이긴 하지만
제대로 동작하는 것을 확인했다.
이제 총알을 쏴야한다. 가장 기본적으로 만들 타워는 게틀링타워이다.
바로 요녀석
기본적으로 유니티에서 제공하는 기본도형만을 가지고 만들었다.
이녀석에게 생명을 불어 넣어보자 가장먼저 해야될 것은 새로운 클래스를 만들어서
TowerParent를 상속받는 것이다. 타워들이 공통적으로 가지고 있는 기능은
TowerParent에서 만들고 게틀링타워만의 고유속성은 GattlingTower 클래스에서
처리할 것이다.
게틀링이 공격할 대상을 찾으면 쿨타임을 거쳐 준비상태에 들어간다.
이후 공격할 준비가 되면 공격속도에 따라 총알을 쏘면 된다.
현재 총알에 대한 것은 나중에 처리하도록 하고 Prefab으로 아무 도형 하나를 받아서
생성하고 Destory 함수로 바로 없어지도록 해보자.
게틀링 타워의 AI코드이다.
이제 실행해보자. 현재까지 만들어진 것에 대한 영상이다.
이 영상을 보면 몇가지 문제점을 발견할 수 있을 것이다...만 총알에 대해서는 다음에 알아보도록 하자.
댓글 : 2 개
- http://
- 2014/08/15 AM 12:08
마이피에서 이런 자료를 올리시는 분도 계셨군요:)
간결하고 재밌는 영상이라 다른 글도 읽어 봤는데 업무( ? )에 도움이 될 것 같아 친추날렸습니다~
간결하고 재밌는 영상이라 다른 글도 읽어 봤는데 업무( ? )에 도움이 될 것 같아 친추날렸습니다~
- 잘자염
- 2014/08/15 AM 12:11
업무 ㄷㄷ 친추 확인했습니다.
user error : Error. B.