Nexon Supporters Hackathon 09

이태곤·2022년 9월 27일
0
post-thumbnail

Index

  1. Movement Component

  2. Rigidbody Component

  3. Trigger Component

  4. WebSprite Component

  5. YoutubePlayerWorld Component

  6. AvataRender Component & CostumeManager Component


Movement Component

  • Default Player에 기본적으로 탑재되어있는 Component로 캐릭터의 이동속도, 점프정도를 설정할 수 있다.

  • InputSpeed : 캐릭터의 이동속도(높은 값 -> 빠른 이동속도)

  • JumpForce : 캐릭터의 점프정도(높은 값 -> 높게 점프)

  • Enable : 맵에 캐릭터 표시여부


Rigidbody Component

  • 일반적인 움직임에대한 기본적인 물리값들을 Property로 가지고있다.

  • DownJumpSpeed : 하단점프를 할때, 점프하는 정도를 의미한다.(높은 값 -> 높은 점프)

cf) 캐릭터가 밑으로 가는 하단점프를 하게되면 위로 점프를 살짝했다가 내려가게되는데

이때, 위로점프하는정도를 조정하는 값이 DownJumpSpeed이다.

  • Gravity : 수직으로받는 중력값을 의미한다.

높은 값 -> 점프 시에 높은중력으로 인해 빨리 가라앉음

낮은 값 -> 점프시에 낮은중력으로 인해 천천히 가라앉음 ex)아쿠아리움에서의 캐릭터움직임

  • 낮은중력으로 공중에 오래 떠있게 된다.

  • IsBlockVerticalLine : 체크를 하게되면 foothold가 되있는 수직기둥에 막히게된다.

ex) foothold가 수직으로 되어있어 IsBlockVerticalLine을 활성하게되면 캐릭터가 지나갈 수 없다.


  • IsolatedMove : 체크를 하게되면 foothold가 이어져있지 않은곳에서 떨어지지 않게된다.

ex) foothold가 이어져있지 않은곳에서 캐릭터가 떨어지지 않고 막히게된다.


  • Mass : 질량을 의미하며 값이 클수록 질량이 커지므로 캐릭터에 가속력이 붙는시간이 오래걸리게 된다.

  • WalkDrag : 마찰력의 의미한다.(큰 값 -> 마찰력증가, 미끄러짐 감소)

  • WalkSlant : 경사를 오를 수 있는 정도를 의미한다.(큰 값 -> 경사잘오름, 작은 값 -> 가파른경사 못오름)

ex) WalkSlant값을 0.5로변경시 아래와같은 경사는 오르지 못하는것을 확인해볼 수 있었다.


  • WalkSpeed : 캐릭터의 최대 이동속도를 의미하며 계속해서 가속도가 붙어 캐릭터의 속도가 비정상적으로 빠르게되는 것을 방지할 수 있다.
  • IsQuaterViewMode : 캐릭터가 중력의 영향을 받지 않고 평면상에서 움직이는 것처럼 설정할 수 있다.

-> QuaterViewAcceleratioX : QuaterView모드에서의 X축에대한 캐릭터의 이동속도

-> QuaterViewAccelerationY : QuaterView모드에서의 Y축에대한 캐릭터의 이동속도

  • 지형에 상관없이 평면상에서 움직이는 캐릭터의 모습

Trigger Component

  • 충돌에대한 처리를 해주는 Component 다음과 같은 세가지 이벤트핸들러를 가지고있다.

TriggerEnterEvent : 충돌영역 안에 들어왔을 때 발생

TriggerLeaveEvent : 충돌영역을 벗어나게되면 발생

TriggerStayEvent : 충돌영역 안에 머무르게될때 주기적으로 발생

ex) Default Player가 선물상자영역안을 들어오기 -> 통과하기 -> 나가기 까지의 상황


  • 각 Trigger Event Handler 스크립트 작성내용

  • 들어올때 : 1번, 머무르는 동안 주기적 발생 : 75번, 나갈때 : 1번

Trigger Component활용 예시

  1. 선물상자 Entity추가 -> Entity의 충돌을 감지할 Trigger Component add -> Trigger에대한 Event Handler내용을 담고있는 GiftComponent add


  1. Event Handler 작성내용

  • HandleTriggerEnterEvent : 충돌영역 안에 들어왔을 때 발생

  • local movement = TriggerBodyEntity.MovementComponent

--> Trigger를 가지고있는 Entity(선물상자)에 충돌한 Entity(Default Player)의 MovementComponent정보를 변수 movement에 저장

  • local transform = TriggerBodyEntity.TransformComponent

--> Trigger를 가지고있는 Entity(선물상자)에 충돌한 Entity(Default Player)의 TransformComponent정보를 변수 transform에 저장

  • if문 : 충돌한 Entity가 저장하고자하는 Component를 가지고있지 않을경우에대한 예외처리(종료)

Trigger 발생

--> 충돌한 Entity(Default Player) : 이동속도 3증가, (x,y) 크기 3배증가

--> Trigger를 가지고있는 Entity(선물상자) : Enable -> False(사라지는 효과)

  1. 결과화면

플레이 -> 선물상자먹기 -> 캐릭터속도 크기증가 & 선물상자 사라짐



WebSprite Component

  • 웹에 존재하는 이미지파일을 메이플월드상에 표현할 수 있는 기능을 담고있다.

  • Url에 원하는 이미지의 url값을 입력해주면 된다.


  • PROJECT MOD png이미지 url 입력화면

YoutubePlayerWorld Component

  • Youtube에 존재하는 영상파일을 메이플월드상에 표현할 수 있는 기능을 담고있다.

-WebSprite Component와 마찬가지로 Url에 영상갯수를 입력하고 url값을 입력해주면 된다.


  • 좋아하는 노래앨범 영상으로 넣어봤습니다.

AvatarRenderer Component & CostumeManager Component

  • Default Player의 외형을 Copy해놓은 복제아바타를 만드는 기능을 담고있다.

  • 외형은 커스터마이징 가능하도록 CostumeManager Component에서 아바타를 꾸밀 수 있다.

  • 메이플 랭킹시스템, 명예의전당같은 곳에 서있는 석상, 쇼핑몰 디스플레이 등에 활용가능하다.


--> 처음에 Component를 추가했을때 같은외형을 가진 아바타 Entity로 Copy된 모습


--> CostumeManagerComponent를 통해 커스터마이징을 한 후에 아바타 Entity모습

0개의 댓글