• [Unity Engine] 유니티로 타워디팬스 만들기 - Part32014.08.16 PM 03:54

게시물 주소 FONT글자 작게하기 글자 키우기

이제 총알을 만들어보자 총알이 하는 일을 생각해보면
타워의 공격력만큼의 피해를 피해자에게 전달하는 것이다.

여기서 전달하는 방법으로 몇가지 나누어서 생각해보자 편의를 위해서
다음과 같이 분류를 나누었다.

해병식 : 공격시 바로 피격자에게 Effect 생성
해병식(改) : 총구에서 Raycast를 해서 첫번째 감지한 오브젝트에 데미지를 줌 중간에 벽이 있을경우라던가...
불곰식 : 미사일이 날아감 그런데 맞을 피격자가 정해져 있음
카타펄트식(워3) : 미사일을 발사 후에 미사일이 충돌체크를 함 피하는것이 가능

각각 적당한 이름을 붙이고 클래스를 다음과 같이 만들 것이다.


여기서 Bullet Basic의 이름을 IBullet으로 바꾸고 클래스가 아닌 인터페이스로 설계해 보자


인터페이스는 추상클래스의 하위호완이라고 할 수 있는데 외부에서 해당객체에게
공통적으로 요구할 수 있는 명령을 선언하면 된다. 예를들어 총알이 가지고 있어야할
메서드는..

- 타워는 총알에게 피격자를 공격할 것을 요구한다.
- 피격자는 총알에게 데미지를 요구(?)한다. -> 총알이 피격자의 HP를 깍는다. 고로 필요 없음

이 정도가 있을 것이다. 공격하는 방식 데미지를 주는 방식 등등을
다르게 만든다면 여러가지 효과를 주는게 가능 할 것이다. 이제 코딩을 시작하자
여기서 상기해야할 것은 필자가 완벽하게 설계를 하고 만드는게 아니라
부모클래스의 스팩이 자꾸 변한다는 것이다. 안좋은 습관이다. -ㅁ-


* SendAttackMessage() 제거

아주 간단한 Bullet Interface이다. 가끔씩 C#을 하면 보이는 'i'가 붙은 뭐시기
예를들어 IEnumerator 같은 것들은 전부 인터페이스이다.

이것을 상속받은 bullet을 만들어보자 일단 InstantBullet 하나만 만들것이다.

MonoBehaviour,IBullet를 상속받은 것을 볼 수있고 IBullet에서부터 받은
인터페이스를 구현한 것을 알 수있다. 여기서 잘못 구현한것은
총알에 적에게 데미지를 보내는 부분은 구지 인터페이스에서 추가할 필요가
없다는 것을 알 수 있다. IBullet에서 SendAttackMessage를 지워주자.

대충 만들었으면 파티클을 추가하고 적 HP를 한 10정도에 공격력1 정도로 해놓고
돌려보자


어제 올릴려고 태극기를 달았는데(...) 늦었다. -ㅁ-;


ps. 하.. 지금까지 게시물쓰는 것과 만드는걸 동시에 했는데 이제
구현다하고 적어야 겠네요.-_-; 글이 너무 어수선...
댓글 : 0 개
친구글 비밀글 댓글 쓰기