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. PlayEffect 함수를 사용하여 KeyDownEvent 스크립트 수정
2. 결과 확인
PlayEffectAttached() 함수
PlayEffect는 특정 위치, 즉 고정된 Position에 이펙트를 호출하는데 적합한 함수이기 때문에 버프류 스킬과 같이 항상 캐릭터 위에 떠 있어야 할 이펙트에는 적합한 함수는 아니다. 따라서 이러한 경우에 사용하는 함수가 바로 PlayEffectAttached 함수이다
1. PlayEffectAttached 함수를 사용하여 KeyDownEvent 스크립트 수정
2.결과 확인