본문 바로가기
개발 (Game)/(2021) Unity RTS 포트폴리오

[Day 5-2] 유닛 세 종류 모두 구현 완료 및 공격 시스템 수정

by 진현개발일기 2021. 7. 16.

[2021. 07. 16]

 

공격 시스템이 다 마무리 된줄 알았으나, 애니메이션까지 탑재하고 실험을 해봤는데, 실수한 부분을 발견했다.

 

처음에 짠 공격 스크립트 구조는 유닛들이 공격 애니메이션을 취하지도 않고 빌딩 스스로 GetAttacked()를 하는 것이다.

 

유닛들의 Attack()함수에 유닛 혹은 빌딩 두 개 다 들어가게 할려고 일반화를 사용할려고 했으나, 서로 성질이 다른 부모들이어서 내가 짜 놓은 구조에는 일반화로 구현하기가 힘들었다. 그래서 방법을 계속 생각해봤고 마침내 정리를 할 수 있었다.

 

Units.cs의 공격 부분
Soldier.cs 일부분
인터페이스를 활용한 제너릭

 

반격 확률

위에 Soldier.cs일부분 사진 속에 Attack도 인터페이스 를 제약으로 두는 일반화를 사용하고 싶었으나.

다른 것은 다 되는데 transform.LookAt() 괄호 안에 transform을 넣어야 했기 때문에 방법을 계속 찾다가 해결을 못하고 마무리를 한 것이 저 상태이다.  (인터페이스 활용했으면 더더욱 깔끔했을 텐데 아쉬웠다..)

 

worldbuilding 인터페이스 상속
GridUnitSystem.cs 공격 부분 수정
건물 공격 성공(애니 발동)

건물, 유닛을 한 함수에서 걸러내서 공격하는 것은 구현이 되었다. 그리고 병사가 Lv2 이상일 경우 레벨에 따른 확률로 ), 한 대 맞고, 반격을한다. (lv이 높을수록 발동 확률 ↑)

 

반격 구현 완료

 

피가 0이 될경우(총알에 죽었을 때)
피가 0일 될 경우(탱크나 야포에 죽었을 때)

 

Zoom을 끈 상태에서는 프레임이 다행히도 아직까지는 최대 280이 나온다.

 

 

(+ 탱크 구현 완료 )

탱크도 구현 했다.

 

탱크 레벨업 특수기술은 일정 확률로 공격 회피다.
탱크 공격이다
플레이어 유닛 선택 시 주변 유닛들이 쳐다보는 것 또한 수정했다.

 

(+ 야포 구현 완료, 21.07.17 )

탱크와 원리가 같으나 레벨 특수효과는 일정 확률로 한 번 더 공격 기회가 주어진다.

[+ 유닛 공격(제너릭 사용) 재수정 ]

잠시 머리를 식히고 피자를 먹다가 영감을 얻어서 바로 손 씻고 노트북에 앉아서 고쳐냈다.

 

unit.cs
Soldier.cs
Tank.cs
GridUnitSystem.cs

(실험 완료)

얼마나 황당한가 이렇게 간결하게 가독성있게 쓸수있는건데 안된다고 생각해서 넘어갈뻔했다. 여기서 또 한 번 느낀다.

안된다고 생각하면 그때부터 가능성이 낮아진다. 항상 무엇이든 할 수 있으니 방법만 생각하자.

728x90