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의 원하는 기능을 객체 형식으로 가져와서 멤버 변수를 넣어주면 된다.
오늘도 부족하디 부족한 글 보느라 정말 감사하고, 제발 또 봤으면 좋겠다.
꼭 다시 놀러와주라!
'해커톤, 개인 프로젝트 > Nexon MOD 해커톤' 카테고리의 다른 글
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 12 회고 (0) | 2022.07.24 |
---|---|
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 11 회고 (0) | 2022.07.21 |
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 8 회고 (0) | 2022.07.19 |
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon Chapter 7 회고 (0) | 2022.07.19 |
멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon 공동 월드 회고 (0) | 2022.07.15 |