- 3장
* TransFormComponent
: 오브젝트가 월드 어디에 표시되는가, 오브젝트의 위치 정보를 갖고 있습니다.
- Position : 좌표, 위치에 대한 속성값 조정
- Scale : 옆으로 위로 늘리기(entity 의 크기) : 물체의 크기, 크기에 대한 속성값을 x, y, z축 기반으로 조정 (default: 1)
- ZRotation : 회전 각(y축 기준) : 회전 값 (2D 게임에서는 Z축으로 회전함, 각도는 degree)
자식의 transformComponent 의 position 은 부모 기준으로 좌표를 나타낸다.
유의할 점은 특정 오브젝트를 자식으로 넣고 부모의 값을 바꾸면 자식도 함께 영향을 받고, 자식의 좌표는 부모 좌표 기준 상대 좌표로 표기한다는 것입니다. 따라서 월드 기준(WorldPosition) 좌표는 [자신의 좌표+부모 좌표]라고 이해하시면 되겠습니다.
즉 부모의 position + 자식의 position 을 계산해야 world 에서의 좌표를 알 수 있다.
- Position : 상대 좌표
- WorldPosition : 절대 좌표
- ZRotation : 상대 rotation
- WorldZRotation : 절대 rotation
* SpriteRendererComponent
- PlayRate 애니메이션의 속도 지정
- StartFrameIndex, EndFrameIndex 움직이는 애니메이션의 시작점과 끝점을 설정하면 움직임을 변경할 수 있음 ( 2 , 2 로 설정하면 두번째 순서의 사진을 볼 수 있음.)
- Flip X , Y X축, Y축으로 회전
- Drawmodel 을 tile 로 바꾸면 반복이 가능하다 (tiledsize에서 반복 횟수)
정리
- SpriteRUID : 오브젝트의 고유한 번호. 이미지를 id 형태로 관리하는 것
- FlipX / FlipY : X축과 Y축을 기준으로 뒤집음. (좌우반전 / 상하반전)
- Color : 오브젝트에 색깔을 입힐 수 있음. (원본 이미지의 색에 혼합돼서 출력됨.)
- DrawMode
- Simple : 기본적인 형태
- Tile : 동일한 형태를 계속 이어나가는 오브젝트(예: 바닥 or 벽)
- TiledSize : 배치할 타일(오브젝트 하나)의 개수
- PlayRate : (Animate 속성을 갖고 있는 오브젝트의 경우) 속도 조절
- StartFrameIndex : (Animate 속성을 갖고 있는 오브젝트의 경우) 시작 이미지 인덱스
- EndFrameIndex : (Animate 속성을 갖고 있는 오브젝트의 경우) 종료 이미지 인덱스
* 발판
설정 - 만들기 - 발판 정보 체크
하면 발판이 보이게 된다.
어떤 엔티티는 발판이 보이는 것과 같이 나타나게 되는데 ,
마우스 오른쪽 클릭, edit Foothold 를 누르면
발판 정보를 바꿀 수 있다. 그 상태에서 마우스 우클릭을 또하고 add point 를 누르면 발판 정보를 추가할 수 있다.
* CustomFootholdComponent
edgelists - size : 발판의 갯수 (사진에서 6개)
- FootholdDrag : 해당 foothold의 마찰력
- FootholdForce : 해당 foothold를 밟고 있는 힘
- FootholdWalks : 해당 foothold를 밟고 있을 때 이동 속도
* 물체의 우선순위
메이커에서의 엔티티 순서는 레이어 우선순위 적용 규칙을 따릅니다. 레이어 우선 순위는 다음과 같습니다.
- Map Layer - SpriteRendererComponent의 SortingLayer
- SpriteRendererComponent의 OrderInLayer
- TransformComponent의 Position Z
위 순서에 맞게 레이어를 sorting 해주면 됩니다.
- 5장
* TweenLineComponent
: 원점에서 목적지까지의 선형운동
종료방식 - RepeatFoundTrip : 종료되지 않고 계속 반복
- OneRoundTrip : 설정된 x 값만큼 한번만 선형운동을 진행 ( 5만큼 )
* TweenLineComponent
: 원점을 중심으로 원운동
회전반경 : 1만큼의 반지름으로 회전
* TweenLineComponent
: 원점에서 목적지까지의 선형운동
* RigidBodyComponent
: 강체의 물리적인 속성을 컨트롤 할 수 있는 컴포넌트입니다.
- gravity : gravity 프로퍼티의 값 조정을 통해 공중에 떠 있거나 지면에 떨어지도록 할 수 있습니다.
-> 움직이는 monster 류의 엔티티는 몬스터의 발이 바닥에 닿도록 떨어지지만
그냥 물건같은 경우는 엔티티의 중심이 가운데에 맞춰져 있어서 가운데가 바닥에 닿도록 떨어지는 것을 알 수 있다.
- IsQuaterViewMove : 프로퍼티의 값 조정을 통해 컴포넌트가 지형에 떨어지지 않고 자유롭게 움직일 수 있도록 설정할 수 있습니다. -> 사진에서 보는 것과 같은 앱에서는 이것을 설정해 놓아야 한다.
- IsBlockVerticalLine : 세로 방향의 foothold를 설정할 수 있습니다.
사진에서 보는 것과 같이 오른쪽 블럭이 발판으로 막혀있지만 실제로 지나가면 그냥 블럭 위로 지나간다.
하지만 이 버튼을 키게 되면 벽처럼 막혀서 지나가게 된다. (밑에 사진 참고)
* MovementComponent
MovementComponent는 이동 속도와 점프의 정도, 활성화의 여부를 조절하는 프로퍼티가 존재합니다.
InputSpeed 프로퍼티의 조정을 통해 이동 속도를 설정하고, JumpForce 프로퍼티의 조정을 통해 점프의 정도를 설정합니다.
* TriggerComponent
TriggerComponent는 엔티티의 충돌을 감지하는 컴포넌트입니다.
MOD에서의 충돌이란 충돌체를 포함하고 있는 엔티티의 충돌 영역이 서로 교차했을 때를 의미합니다.
- Collider : 프로퍼티 에디터의 Edit 버튼을 누를 경우 엔티티에 충돌체가 나타남, 드래그 or 핸들러 조절을 통해 충돌체 크기 설정 가능
- BoxOffset & ColliderOffset : 충돌체의 위치 설정
- BoxSize : ColliderType이 Box일 경우 충돌체의 크기 설정
- CircleRadius : ColliderType이 Circle일 경우 충돌체의 크기를 설정
- ColliderType : 충돌체의 형태 선택, Box의 경우 충돌체를 사각형으로, Circle의 경우 원형으로 변경
- IsLegacy : TransformComponent에 영향을 받을지 여부를 설정
component 를 생성 ->
Workspace 에서 DefaultPlayer 를 누르고 -> property 에서 add 누르고 myplayer
-> Workspace 에서 myplayer 더블클릭
이 창이 뜰 거고, 여기서
액션을 수행할 핸들러는 리액터가 되는 스크립트 컴포넌트의 Entity Event Handler를 통해 추가해줍니다.
검색창에 Trigger 입력을 통해 아래 이벤트 핸들러를 선택할 수 있습니다.
- TriggerEnterEvent : 엔티티 간 처음 충돌이 발생했을 때 1회 발생
- TriggerStayEvent : 엔티티가 충돌 중이면, 프레임마다 발생
- TriggerLeaveEvent : 엔티티가 충돌되었다가 충돌이 끝났을 때 1회 발생
self.Entity.RigidbodyComponent:AddForce(Vector2(5,0))
-> 충돌 시 5만큼 힘을 받음 (즉, 밀려남)
이렇게 tweenlinecomponent 를 설정해주면 톱니바퀴가 선형운동을 하고, 유저의 몸이 닿을 때마다 밀려나는 것을 구현할 수 있다.
triggercomponent 가 없는 객체끼리는 충돌 할 수 없다.
충돌 Event Sender 설정을 통해
리액터 컴포넌트가 추가된 엔티티의 충돌 이벤트를 받는 경우에는 값을 self로,
외부 엔티티의 충돌 이벤트를 받는 경우에는 Entity로 설정해줍니다.
* 장애물과의 충돌(TriggerEnterEvent)이 들어올 경우 hp를 100씩 감소시키는 스크립트 예제
self.Entity.PlayerComponent.Hp = self.Entity.PlayerComponent.Hp - 100
UI 창에서 Hp 를 켜고 이 코드를 작성하면 trigger 에 부딪힐 때마다 hp가 감소함.
위 HandleTriggerEnterEvent 함수는 장애물과의 충돌이 들어오는 시점에서 호출되는 함수입니다. 함수의 매개변수로 TriggerEnterEvent 이벤트를 받아온 뒤, 함수 내부에서 수행할 명령어를 입력해줍니다.
충돌 이벤트 샌더를 self 로 선언해줌으로써 리액터 컴포넌트가 추가된 엔티티의 충돌 이벤트를 받게 됩니다.
* TriggerComponent
- LookDirectionX : 현재 X축을 기준으로 캐릭터가 바라보고 있는 방향을 의미
- 양수 : 오른쪽
- 음수 : 왼쪽
- FixedLookAt : 캐릭터가 바라보고 있는 방향을 고정시키는 것
- 1 : 오른쪽
- -1 : 왼쪽
캐릭터가 오른쪽을 바라보고있을 때, 충돌하면 -5만큼 (왼쪽으로 5만큼) 힘을 받는 (밀려나는) 코드
만약 그게 아니라면 (왼쪽을 바라보고있다면) 충돌시 +5만큼 (오른쪽으로 5)만큼 힘을 받는 (밀려나는) 코드
'MapleStory Worlds Super Hackathon > 기본 개념' 카테고리의 다른 글
MapleStory World - Event (1) | 2022.09.23 |
---|---|
MapelStory World - 네트워크 (0) | 2022.09.23 |
MapleStory World - 기본 문법 (1) | 2022.09.23 |