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

레벨 생성 - 3) 변경할 수 있는 타일 추가 + 타일의 세부 사항 변경

monstro 2026. 6. 8. 18:55
728x90
반응형

- 개요

변경할 수 있는 타일의 종류코너와 다리, 언덕 타일을 추가한다

타일의 회전위치를 변경할 수 있는 기능을 추가하고 변경된 타일의 이름콜라이더를 갱신한다

 

- 스크립트

1) TileSetHolder 클래스

 

타일을 종류별로 등록하는 클래스에 위와 같이 타일의 종류 멤버변수를 추가한다

각각 코너 + 언덕 + 다리 용도로 사용하는 타일을 의미한다

 

2) TileSlot 클래스

 

GetTileCollider 함수를 추가하여 변경하기 이전의 현재 타일의 콜라이더를 반환한다

 

 

GetCollider 함수를 호출하여 외부에서 현재 타일의 콜라이더에 접근할 수 있다

 

 

UpdateCollider 함수를 위와 같이 정의한다

변경하기 이전의 콜라이더를 제거하고 새로 적용할 콜라이더의 타입에 맞게 콜라이더를 적용한다

갱신하기 이전의 사항은 Undo에 의해 기록되어 적용하지 않고 취소할 수 있다

 

 

RotateTile 함수를 추가하여 Y축을 기준으로 타일을 회전시킬 수 있다

동일하게 갱신하기 이전을 Undo에 기록하여 적용하지 않고 취소가 가능하다

 

 

AdjustVertical 함수를 추가하여 수직 방향으로 캐릭터를 이동시킬 수 있다

갱신하기 이전은 마찬가지로 Undo에 기록하여 적용하지 않고 취소할 수 있다

 

 

SwitchTile 함수에 위와 같이 로직을 추가한다

  • 트랜스폼 변경되기 이전의 값Undo에 기록
  • 콜라이더가 변경되기 이전의 값Undo에 기록
  • 변경된 타일 오브젝트의 이름을 갱신
  • 변경된 타일 오브젝트의 콜라이더를 갱신
  • 유니티 에디터가 아닌 경우에도 자식 오브젝트를 문제없이 새로 생성

 

3) TileSlotEditor 클래스

 

UI에 적용하기 위한 GUIStyle 멤버변수를 추가한다

 

 

타일 오브젝트회전을 변경하는 ApplyRotationChange 함수

해당 함수를 호출하는 버튼 UI를 추가하는 AddTileRotationGUI 함수를 추가한다

 

 

타일 오브젝트 Y값을 변경하는 AddTileVertical 함수

해당 함수를 호출하는 버튼 UI를 추가하는 AddTileVerticalGUI 함수를 추가한다

 

 

OnInspectorGUI 함수에 위와 같이 로직을 추가한다

  • GUIStyle 멤버변수의 값을 설정하여 GUI의 디자인을 설정
  • 버튼의 개수에 따라 버튼의 너비로 사용할 로컬변수의 값을 설정
  • 타일 오브젝트의 회전Y축 위치 값을 변경할 수 있는 버튼을 생성
  • 기존의 타일 오브젝트를 코너 타일 + 다리 타일 + 언덕 타일로 변경할 수 있는 버튼을 생성

 

- 최종 실행 결과

728x90
반응형