카테고리 없음

[멋쟁이사자처럼 X 넥슨 MOD Suppoters Hackathon] 4주차 회고 <컴포넌트의 활용 2>

프로틴형님 2022. 7. 28. 23:23

InputService를 활용한 입력과 액션


유저가 키를 누르거나, 혹은 모바일의 화면을 터치하는 등의 입력이 들어오게 되면 InputService에서는 유저의 입력에 대한 이벤트를 발생시키게 되는데, 우리는 이 이벤트에 대한 핸들러를 추가하여 이벤트에 대한 액션을 수행하게끔 할 수 있다.

InputService의 이벤트와 핸들러의 활용

- Key

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

- Touch

  • ScreenTouchEvent : 월드상의 화면을 터치, 또는 클릭했을 때 1회 발생하는 이벤트
  • ScreenTouchHoldEvent : 월드상의 화면을 터치하고 있는 동안 프레임마다 발생하는 이벤트
  • ScreenTouchReleaseEvent : 터치를 유지하다가 터치를 종료했을 때 1회 발생하는 이벤트

ScreenTouchEvent 활용 예시

1. InputService 이벤트를 추가하려는 Entity에 TouchReceiveComponent 추가

 

2. ScreenTouchEvent 스크립트 작성

 

3. 결과 확인


Skill Effect


Skill Effect란 특정 키를 누를 때마다 노출되는 작업이다. _EffectService 클래스 내부에 이벤트를 컨트롤 할 수 있는 함수가 내장되어 있으며, 주로 PlayEffect() 함수와 PlayEffectAttached() 함수가 자주 사용된다.

키 입력 기능 만들

1. KeyDownEvent 스크립트 작성

 

2. DefaultPlayer에 컴포넌트 추가

 

3. 결과 확인


이펙트 호출 기능 추가

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 : 이펙트 한 번 재생
  1. 1. PlayEffect 함수를 사용하여 KeyDownEvent 스크립트 수정
    2. 결과 확인

PlayEffectAttached() 함수

PlayEffect는 특정 위치, 즉 고정된 Position에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합한 함수는 아니다. 따라서 이러한 경우에 사용하는 함수가 바로 PlayEffectAttached 함수이다

 

1. PlayEffectAttached 함수를 사용하여 KeyDownEvent 스크립트 수정

 

2.결과 확인