맵 수정
맵 스크롤 가능 여부, UI 자리를 고려한 맵으로 수정제작했다. UX에 대해 공부해보고 싶을지도.
타워 Base 제작
타워 로직(Brain)과 외형(Body)의 Base들을 완성하고 구체화 테스트를 조금이나마 해봤다. 고민했던 부분들 작성함.
RangeTowerController
범위형 공격을 하기 때문에 범위 내에 있는 모든 적에게 타워 자신의 Cooldown에 맞춰 공격한다.
범위 내 적을 탐지할 때는 콜라이더의 Trigger를 사용했다. Enemy가 OnTriggerEnter 되면 타겟에 포함시키고, OnTriggerExit 될 때는 타겟에서 제거한다. 타겟을 담고 있을 자료구조를 선택할 때 다음과 같은 사항들을 고려했다.
- 삽입, 삭제가 자주 일어난다.
- 전체 순회를 돌아야 한다.
위 두가지를 충족할 수 있는 자료구조 후보로 LinkedList와 HashSet가 있다. 그런데 중복 방지까지 되면 더 좋으니 HashSet을 사용하는 것으로 결정했다.
FloorTowerController
장판형 공격을 한다. 범위 내에 있는 적 중 랜덤한 적의 위치에 장판을 생성하도록 만들기로 했다.
범위형 공격과 발사체 공격을 섞은 타워네...
이 타입의 타워는 타겟을 저장할 때 삽입/삭제가 자주 일어나지만, 랜덤 타겟을 정해서 인덱스접근도 해야 하므로 접근이 편한 List로 만들었다. 아직 다른 개체들도 개발 완료된 것들이 없기 때문에 targets에 대해서는 테스트를 못해봤다. 불안한데요!?
자꾸 헷갈리는 구조 정리해둠
타워 로직 부분
- TowerBrainBase 프리팹에서 Variant를 생성하여 AttackType별 타워 로직을 만들었음.
- 생성한 Variant에 각각 컨트롤러를 붙여주기. (각 컨트롤러는 'TowerControlBase' 클래스를 상속받음)
- Range 타입: RangeTowerController
- Floor 타입: FloorTowerController
- Projectile 타입: ProjectileTowerController
타워 바디
- 프리팹 TowerBodyBase의 Variant들이 실질적인 바디 역할을 한다.
- 각 Body에는 TowerBodyBase 컴포넌트가 붙어 있다.
- 각각의 Variant에 맞게 아트 넣어주면 된다.
=> 타워들 전투로직에서 적군 리스트를 저장할 때 전부 LinkedList를 사용하게끔 내용이 바뀌었다.
'프로젝트 일지 > Unity' 카테고리의 다른 글
[Unity/TIL] 트러블슈팅 - 비동기 생성 함수 로직 오류 해결 (2) | 2025.04.21 |
---|---|
[Unity/TIL] DataManager 사용성 개선 (2) | 2025.04.18 |
[Unity/TIL] 프리팹 Variant (2) | 2025.04.15 |
[Unity/TIL] 방치형 게임에서 유닛 스폰 최적화 구조 설계하기 (1) | 2025.04.14 |
[Unity/TIL] MonoBehaviour 상속받지 않는 곳에서 코루틴 사용하는 방법 (8) | 2025.04.11 |