멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 9~ 10 회고

2022. 7. 20. 16:21해커톤, 개인 프로젝트/Nexon MOD 해커톤

반응형

멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 3주차 20일 회고

 

 

 

부족하지만 멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon에 합격하게되어서 MOD를 먼저 사용해볼 수 있는 감사한 기회를 얻게 되었습니다...! 최선을 다해 공부하고, 리뷰하겠습니다! 부족한 글 보러 와주셔서 감사드립니다!

// 해당 글은 멋쟁이 사자처럼 공동 학습 교안을 바탕을 작성되었습니다.

아뇨

 

 

 

 

 

 

오늘도 블로그를 찾아줘서 고맙고, 반갑다.

반갑습니다

 

 

 

 

 

 

Chapter 9~ 10은 컴포넌트의 활용에 대해서 중점적으로 배우는

매우

 

매우

 

매우

 

 

중요한 챕터이다.

 

 

 

 

 

 

MOD 개발에 있어서의 컴포넌트는 엔티티의 움직임 및 여러 속성들을 좌지우지 하기에 반드시 반드시 알고있어야 한다.

 

 

 

 

반드시

 

 

 

 

 

 

 

 

// 컴포넌트에 대한 기초 개념과 기본 컴포넌트는 아래 주소를 참고하도록 하자!

https://devdongbaek.tistory.com/131

 

 

 

 

 

 

 

 

 

이번 챕터에서는 여러 컴포넌트들과 해당 컴포넌트의 Property가 어떤 역할을 하는지에 대해서 배웠는데, Chapter 2에서 배우지 않았던 컴포넌트들은 제외하고 한번 이야기 해보자

 

가보자~!

 

 

 

첫번째로 이야기 해볼 컴포넌트는 MovementComponent 이다. 이름에서 알 수 있듯이 이 컴포넌트는 캐릭터의 움직임에 관여하는 컴포넌트이다.

 

 

 

MovementComponent는 2개의 Property가 존재하는데, 각 Property는 다음과 같다.

  • InputSpeed : 이동 속도를 조절하는 프로퍼티 (X축 기준)
  • JumpForce : 점프력을 조절하는 프로퍼티 (Y축 기준)

 

 

 

 

두번째로 이야기 할 컴포넌트는 WebSpriteComponent 이다. 이 컴포넌트는 웹에 있는 이미지를 가져와서 표시해주는 컴포넌트이다.

 

 

 

WebSpriteComponent는 위와 같은 Property가 존재하는데, 중요한 Property는 다음과 같다.

  • Color : Sprite에 색깔을 덧씌운다.
  • FlipX, FlipY : Sprite의 X, 축을 기준으로 반전 여부를 결정한다.
  • Url : Sprite의 Url이다.

 

 

 

그 다음은 YoutubePlayerWorldComponent이다. 이 또한 이름에서 잘 나타나는데 유튜브 영상을 씬 내에서 불러와 재생시킬 수 있다.

 

YoutubePlayerWorldComponent는 위와 같은 Property가 존재하는데, 중요한 Property는 다음과 같다.

  • YoutubePlayerGUIComponent : UI 상에서 표시해줄 때 사용
  • YoutubePlayerWorldComponent : 월드상에 표시할 때 사용

 

 

 

 

아래부터는 실 mod 개발에 정말 빈번하게 사용되는 컴포넌트들에 대해서 알아보겠다.

 

정말 정말 중요하니 다들 집중해주길 바란다.

 

 

 

먼저 입력 관련 컴포넌트들을 알아보겠다.

  • 입력 관련 컴포넌트는 Entity Event Handler 에서 작업한다 

 

 

 

 

 

아래는 유저가 키보드의 키를 입력했을 때 이벤트를 처리하는 컴포넌트들이다.

 

 

  • KeyDownEvent : 키를 1번 눌렀을 때 발생
  • KeyHoldEvent : 키를 누르는 동안 발생
  • KeyReleaseEvent : 키를 길게 눌렀다 뗐을 때 발생
  • KeyUpEvent : 키를 1번 눌렀을 때 발생

 

만약 키보드의 'P'를 눌렀을 때의 로그를 출력하는 이벤트를 작성할 때의 예시 코드

 

 

 

 

 

유저가 화면을 터치 할 때 이벤트를 처리하는 컴포넌트들이다.

  • ScreenTouchEvent : 월드상의 화면을 터치, 또는 클릭했을 때 1회 발생하는 이벤트
  • ScreenTouchHoldEvent : 월드상의 화면을 터치하고 있는 동안 프레임마다 발생하는 이벤트
  • ScreenTouchReleaseEvent : 터치를 유지하다가 터치를 종료했을 때 1회 발생하는 이벤트
  • TouchEvent : Entity를 터치했을 때 발생하는 이벤트, 엔티티에 TouchReceiveComponent 컴포넌트가 있어야 이벤트 발생
  • TouchHoldEvent : Entity를 터치하고 있는 동안 발생하는 이벤트, 엔티티에 TouchReceiveComponent 컴포넌트가 있어야 이벤트 발생, 짧게 터치하면 발생 X
  • TouchReleaseEvent : Entity를 터치 땠을 때 발생하는 이벤트, 엔티티에 TouchReceiveComponent 컴포넌트가 있어야 이벤트 발생

 

// 터치를 받는 이벤트를 받는 컴포넌트에 반드시 TouchReceiveComponent 를 추가해주어야 한다.

 

 

 

 

 

 

 

입력 관련 컴포넌트에는 유저가 특정 키를 누를 때마다 스킬을 사용할 수 있게 해주는 컴포넌트가 있다.

해당 컴포넌트를 Skill Effect라고 하는데, _EffectService 클래스 내부에 이벤트를 컨트롤 할 수 있는 함수가 내장되어 있으며, 주로 PlayEffect() 함수와 PlayEffectAttached() 함수가 개발에 자주 사용된다.

 

 

 

 PlayEffect() 함수 -> 이펙트를 고정된 특정 위치에 원하는 크기로 호출한다.

-> 쉽게 말해서 스킬을 썼을 때의 해당 유저 위치에 호출

PlayEffect (string animationClipRUID, Entity instigator, Vector3 position, number zRotation, Vector3 scale, boolean isLoop = False)

 

  • animationClipRUID : 호출하려는 이펙트 리소스의 RUID
  • instigator : 맵 정보를 받아오기 위한 엔티티
  • position : 이펙트가 호출될 위치 벡터값 입력 파라미터
  • zRotation : 회전 값
  • scale : 호출될 이펙트의 크기 벡터값 (Vector3)
  • isLoop
    • true : 이펙트 무한 재생
    • false : 이펙트 한 번 재생

 

 

PlayEffectAttached() 함수 -> 이펙트 호출, 호출될 이펙트의 부모 엔티티 선정, 부모의 위치를 기준으로 호출될 위치 설정을 하는 함수

-> 쉽게 말해서 스킬을 쓴 유저의 위치를 따라다니며 호출

  • animationClipRUID : 호출하려는 이펙트 리소스의 RUID
  • parentEntity : 호출될 이펙트의 부모가 될 엔티티
  • localPosition : 부모 엔티티의 position 기준, 얼마만큼 떨어진 곳에서 호출할 것인지에 대한 위치 벡터값 (Vector3)
  • localZRotation : 부모 엔티티의 회전값을 기준, 회전 값 입력
  • localScale : 호출될 이펙트의 크기 벡터값 (Vector3)
  • isLoop
    • true : 이펙트 무한 재생
    • false : 이펙트 한 번 재생

 

 

 

 

 

입력 관련 컴포넌트에는 또한 카메라를  조정할 수 있는 컴포넌트가 존재한다.

바로 CameraComponent이다.

 

기본적으로 Camera는 엔티티, 즉 내 캐릭터를 잡아주고 있다. CameraComponent는 카메라로 목적지가 어디인지 보여주고 다시 내 캐릭터를 잡아주는 함수이다.

 

 

Camera를 다룬 이벤트들도 존재한다.

 

  • CameraSwitchEvent : 카메라가 비추는 대상이 전환될 때 발생하는 이벤트
  • CameraZoomEndEvent : 카메라의 줌 변경이 완료된 후 발생하는 이벤트

 

 

 

 

 

 

 

 

입력 관련 컴포넌트에는 또한 포탈을 조정할 수 있는 컴포넌트가 존재한다.

이는 PortalComponent이다.

 

Portal은 출발지와 목적지가 반드시 한 쌍으로 존재해야 하고, Portal은 기본적으로 방향 키 위를 누를 경우 이동할 수 있다.

 

 

 

PortalComponent에 중요한 Property가 존재한다.

  • PortalEntityRef : PortalComponent를 가진 Entity를 목적지로 설정한다. 설치 후 게임을 저장해야 목록에 노출된다.

 

 

 

Portal를 다룬 이벤트들도 존재한다.

  • PortalUseEvent : 플레이어가 포탈을 이용할 때 발생하는 이벤트

 

 

 

 

 

 

 

 

 

 

 

오늘의 사소한 깨달음 

- 컴포넌트 뿐만 아니라 해당 컴포넌트의 property와 Service에 대해서 더 공부를 해야겠다.
- Service란 말 그대로 기능을 제공한다. Service의 원하는 기능을 객체 형식으로 가져와서 멤버 변수를 넣어주면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

오늘도 부족하디 부족한 글 보느라 정말 감사하고, 제발 또 봤으면 좋겠다.

꼭 다시 놀러와주라!

사랑해요 여러분

 

 
반응형