멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon 2주차 회고

ssunn·2022년 5월 22일
0

이번 시간에는 컴포넌트들의 기본적인 이해와 지형과 레이어, 그리고 기본적으로 많이 사용하는 컴포넌트들에 대해 배웠다.

기본 컴포넌트의 이해

TransformComponent

오브젝트가 월드 어디에 표시되는가. 오브젝트의 위치 정보를 갖고 있음.

특수한 형태를 제외하고는 대부분 있음.

  • 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이면 왼쪽. 캐릭터가 바라보고 있는 방향을 고정시키는 것
profile
BackEnd Developer

0개의 댓글