-기존 점프는 단순히 press하면 같은 높이로 점프하는 것이었다. 그러나 할로우나이트에서 플레이어의 점프는 단순히 press했을때 똑같이 점프하지 않는다. => 점프 키를 눌렀을 때 누른 시간에 비례해서 점프하는 높이가 달라진다.
-이를 어떻게 구현하면 좋을지 찾아보았는데, 대부분 New Input System이 아니라 구현 방법이 달라질 수 밖에 없었다.
=> 대부분 GetKeyDown, Up을 통해 시간을 측정하는 방법이었다.
-이 포스팅에서는 New Input System을 통해 Press와 Hold시간을 구분해 구현해 보려한다.
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Interactions.html
Interactions | Input System | 1.0.2
Interactions An Interaction represents a specific input pattern. For example, a hold is an Interaction that requires a Control to be held for at least a minimum amount of time. Interactions drive responses on Actions. You can place them on individual Bindi
docs.unity3d.com
-New Input System에는 "Interaction"이 있다. 바인딩에서 interactions에 Hold와 Press를 추가해보았다.
-이 interaction의 역할은 해당 키 입력에 대해 어떤 방식으로 처리할 것인지 설정해줄 수 있는 옵션이다.
- interaction은 추가한 순서대로 우선권을 가진다
-위의 이미지와 같이 추가하면 Hold -> Press 순으로 우선권을 가진다. Hold가 먼저 추가되었고, 그 다음에 Press가 추가되었기 때문이다.
-상위의 상호작용이 성공한다면 그 다음인 상호작용은 실행되지 않는다.
-press는 눌렀을때 이벤트 발생, release는 뗐을 때 이벤트 발생
-press의 behavior를 releaseOnly로 바꿔주었다.
using UnityEngine.InputSystem.Interactions;
를 추가하고 코드를 수정해보았다.
HoldInteraction일
때에는 홀딩 시간을 측정하고 키에서 손을 뗀 순간 홀딩 시간에 따라 점프하도록 코드를 작성했다.
-아주 짧게 눌렀을 때와 아주 길게 눌렀을 때 최저/최대 점프 높이를 조정하기 위해 기본값을 넣어주었다.
'[2D] HollowKnight 모작' 카테고리의 다른 글
[HollowKnight] FalseKnight 동작구현 -Slam2 : Player GetHit(이펙트 추가, 충돌시 깜박임 효과, Camera Shake) (0) | 2023.09.20 |
---|---|
[HollowKnight] FalseKnight 동작구현-Slam1 : 충격파 생성 및 이동 연출 (0) | 2023.09.19 |
[HollowKnight] FalseKnight - 애니메이션 - 강타(Slam),레이지(Rage) (0) | 2023.09.16 |
[HollowKnight] FalseKnight- 시작연출, 동작 구현: 패턴 1,2 (0) | 2023.09.16 |
[HollowKnight] 거짓된 기사 애니메이션 - Idle, LeapingBuldgeon, Leap (0) | 2023.09.16 |