유니티 엔진 - 게임 프로젝트/타워 디펜스 게임

유닛 세팅 - 1) 타워 유닛 클래스 생성

monstro 2026. 5. 25. 16:40
728x90
반응형

- 개요

플레이어가 설치하여 적으로부터 거점을 방어하는 타워 유닛을 추가한다

타워 유닛들은 옥상에 설치된 무기를 이용하여 적들을 공격한다

 

- 스크립트 작업

1) Player_TowerBase 클래스

 

타워 유닛의 조상 클래스를 생성한다

모든 타워 계열의 유닛들이 사용할 공통 변수들과 함수들로 구성되어 있다

  • rotationSpeed 멤버변수 : 옥상에 설치된 무기회전시킬 속도
  • attackRange 멤버변수 : 적을 공격하기 위한 사정거리
  • enemyLayerMask 멤버변수 : 적을 판단하기 위한 레이어 마스크
  • attackCooldown 멤버변수 : 적을 공격하기 위한 딜레이
  • towerHead 멤버변수 : 옥상에 설치된 무기의 트랜스폼
  • lastAttackTime 멤버변수 : 가장 최근에 공격한 시간
  • currentEnemy 멤버변수 : 현재 공격할 적의 트랜스폼
  • enemiesToAttack 멤버변수 : 콜라이더에 포착된 적들을 저장할 배열

 

 

Update 함수를 위와 같이 구성하여 자식 클래스에서 오버라이드할 수 있도록 설정한다

현재 공격할 적이 없다FindRandomEnemy 함수를 호출하여 적을 탐색한다

공격할 적이 있다CanAttack 함수를 호출하여 공격할 수 있는지 판단하고 Attack 함수를 호출하여 공격한다

이후 공격할 적과 유닛과의 거리를 판단하여 공격할 적을 설정한다

 

 

FindRandomEnemy 함수의 로직은 위와 같다

OverlapSphereNonAlloc 함수를 호출하여 배열 멤버변수를 사용하여 GC 없이 오버랩을 실행한다

이후 오버랩 결과에서 랜덤한 인덱스의 결과값을 반환한다

 

 

CanAttack 함수Attack 함수의 로직은 위와 같다

CanAttack 함수에서는 공격 쿨타임을 판단하여 공격할 수 있는지 여부를 반환한다

Attack 함수자식 클래스마다 오버라이드하여 로직을 새로 구성할 수 있다

 

 

RotateTowerHeadToEnemy 함수의 로직은 위와 같다

현재 공격할 적의 방향으로 옥상에 배치된 무기를 회전시킨다

 

2) Player_TowerCrossbow 클래스

 

석궁 타워 유닛의 클래스를 생성한다

LateUpdate 함수를 추가하여 적이 이동한 후에 석궁을 회전시키도록 설정한다

Attack 함수를 오버라이드하여 로그를 찍도록 설정하였다

 

- 최종 실행 결과

유닛의 회전

 

Attack 함수의 호출

728x90
반응형