이번 시간에는 컴포넌트들의 기본적인 이해와 지형과 레이어, 그리고 기본적으로 많이 사용하는 컴포넌트들에 대해 배웠다.
기본 컴포넌트의 이해
오브젝트가 월드 어디에 표시되는가. 오브젝트의 위치 정보를 갖고 있음.
특수한 형태를 제외하고는 대부분 있음.
- position : 좌표
- scale : 물체의 크기(1 이하로도 설정 가능)
- rotation : 회전값 (2D 게임에서는 Z축으로 회전함. 각도는 degree)
마우스로도 조절 가능하지만 Property에서 더욱 정확한 값을 줄 수 있다.
특정 오브젝트를 자식으로 넣고 부모의 값을 바꾸면 자식도 함께 영향을 받는다.
또한 자식의 좌표는 부모 좌표 기준 상대 좌표로 표기된다.
따라서 월드 기준(WorldPosition) 좌표는 자신의 좌표+부모 좌표이다.
- Position : 상대 좌표
- WorldPosition : 절대 좌표
- ZRotation : 상대 rotation
- WorldZRotation : 절대 rotation
SpriteRedererComponent
transform과 달리 없는 경우도 있다.
어떤 이미지를 표시할 것인가를 의미한다.
- SpriteRUID : 오브젝트의 고유한 번호. 이미지를 id 형태로 관리하는 것
- PlayRate : Animate 속성을 갖고 있는 오브젝트의 경우 속도 조절
- FlipX / FlipY : X축과 Y축을 기준으로 뒤집음. (좌우반전 / 상하반전)
- Color : 오브젝트에 색깔을 입힐 수 있음. (원본 이미지의 색에 혼합돼서 출력됨.)
- DrawMode : Simple - 기본적인 형태 / Tile - 동일한 형태를 계속 이어나가는 오브젝트(예: 바닥 or 벽)
- TiledSize : 배치할 타일(오브젝트 하나)의 개수
[animation과 관련된 property]
animate 속성을 갖고 있는 오브젝트는 이미지 여러개로 구성되어 있다.
StartFrameIndex / EndFrameIndex: 시작 이미지 인덱스 / 종료 이미지 인덱스
오브젝트가 현재 갖고 있는 이미지 인덱스를 초과하는 값을 입력하면 마지막 인덱스까지만 출력하게 된다.
오브젝트끼리 겹쳤을 때 우선순위 지정은 layer의 순서로 지정할 수 있다.
지형과 레이어의 이해
메이플스토리 맵을 쉽게 재현할 수 있도록 개발되었다.
- 그리드의 교점: 작은 타일
- 그리드의 중점: 큰 사각형 타일
- 클릭+드래그 : 자유로운 타일 구성 가능, 대각선 타일 또한 표현 가능. 마우스 우클릭으로 지울 수 있음.
- 좀 더 볼륨감 있는 타일 표현: Box fill
Tile Map Component
Scene Maker → World → maps → map이름 → TileMap
해당 TileMap의 Property 확인 할 수 있다.
- Color : 컬러 변경 가능(오버레이)
- TileSetRUID : Sprite Picker를 이용해 원하는 타일로 변경 가능
- foothold : 캐릭터&몬스터들이 밟고 다니는 발판 정보
File → Setting → 만들기 → 발판 정보 보기를 선택하면 빨간색 border가 생김
model에 포함되어 있는 foothold도 편집 가능함
마우스 우클릭 → edit foothold 로 편집 가능. 여기서 마우스 우클릭으로 add point, delete point, exit edit foothold 가능
위 오브젝트에 내장되어 있는 foothold 개수는 총 9개이다.
Property > CustomFootholdComponent > edgeLists에서 Foothold edge 개수를 확인할 수 있고, 각 엣지에 대해 상세 편집도 할 수 있다.
- FootholdDrag : 해당 foothold의 마찰력
- FootholdForce : 해당 foothold를 밟고 있는 힘
- FootholdWalks : 해당 foothold를 밟고 있을 때 이동 속도
Map Layer
하나의 맵에는 최대 10개까지 레이어 추가 가능
활성화/비활성화는 레이어에 포함된 오브젝트들에 대해서도 적용됨.
마우스 우클릭 > Duplicate로 레이어 복제도 가능.
특정 엔티티의 레이어를 변경하고 싶으면 특정 엔티티의 Property에서 레이어 변경 가능.
자주 사용하는 컴포넌트
TweenLineComponent
목적지 위치를 지정한 다음 종료 방식을 선택. 애니메이션 기법에 많이 사용됨.
- Tween: 시작점과 목적지 사이의 값들을 시간에 따라 보간해주는 것으로, 이동의 진행 방식에 따라 연출이 많이 달라짐.
- DestinationCoordinateType - Relative : 상대적
- Positions - Size : 움직임 개수
- StopType - OneRoundTrip : 한번만 반복하고 다시 돌아옴
- StopType - RepeatRoundTrip : 계속 반복
- TweenType : 이동 진행 방식 설정
- SyncType : 동기화 방식
- ClientOnly : 동기화가 안된 상태.
- Default : 동기화가 되어 있는 상태.
동기화가 잘 되어 있어야 유저 여러명이 함께 플레이를 할 때 동일한 화면에서 동일하게 플레이 할 수 있음.
TweenCircularComponent
회전 반경에 따라서 회전함.
TweenFloatingComponent
부유 운동 방식 설정 가능. 진폭 설정해서 왔다 갔다 하는 행동을 연출할 수 있음.
RigidbodyComponent
강체의 물리적인 속성들을 컨트롤 할 수 있음.
- gravity : 중력값. 중력값이 설정되어 있지 않으면 공중에 떠 있음. 중앙값을 기준으로 지면에 떨어짐.
- IsBlockVerticalLine : 세로 foothold 설정. 통과하지 못하게 설정.
- IsQuaterViewMove : 지형에 떨어지지 않고 자유롭게 움직임.
- QuaterView에서의 가속도 또한 자유롭게 설정 가능.
MovementComponent
- inputSpeed : 이동 속도 설정
- JumpForce : 점프 정도 설정
TriggerComponent
TriggerComponent를 갖고 있는 객체간의 충돌을 알려줌. (TriggerComponent를 갖고 있지 않은 객체와의 충돌은 감지할 수 없음)
물리적인 특성이 있는 것은 아니지만 스크립트에서 이벤트를 받아서 충돌했을 때 핸들 처리를 해주면 됨. 트랩 등 장애물에 주로 사용된다.
- TriggerEnterEvent : 충돌이 발생했을 때 핸들러 함수 예시
- TriggerStayEvent : 충돌이 발생하는 중
- TriggerLeaveEvent : 충돌이 끝났을 때
PlayerComponent
- PVPMode : 서로 공격 가능
- 장애물 충돌시 hp 감소 예시
PlayerControllerComponent
플레이어 컨트롤하는 컴포넌트. 기본적으로 제공하는 함수들도 확인할 수 있음
간단한 핸들러 함수 예시.
- LookDirectionX : 현재 X축을 기준으로 캐릭터가 바라보고 있는 방향. 양수일 경우 오른쪽, 음수일 경우 왼쪽.
- FixedLookAt : 1이면 오른쪽, -1이면 왼쪽. 캐릭터가 바라보고 있는 방향을 고정시키는 것