도파민조아 MYPI

도파민조아
접속 : 4421   Lv. 51

Category

Profile

Counter

  • 오늘 : 114 명
  • 전체 : 143398 명
  • Mypi Ver. 0.3.1 β
[Unity Engine] 유니티로 타워디팬스 만들기 - Part3 (0) 2014/08/16 PM 03:54
이제 총알을 만들어보자 총알이 하는 일을 생각해보면
타워의 공격력만큼의 피해를 피해자에게 전달하는 것이다.

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

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

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


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


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

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

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


* SendAttackMessage() 제거

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

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

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

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


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


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

신고

 
X