마우스 왼쪽 버튼을 길게 누르고 있는 경우를 판단하는 게 필요해서 기존의 InputManager를 수정하였다
public class InputManager
{
public Action<Define.MouseEvent> MouseAction = null;
private bool isPressed = false;
private float _pressedTime;
private float MIN_PRESS_TIME = 0.2f;
public void OnUpdate()
{
if (Input.GetMouseButton(0))
{
isPressed = true;
_pressedTime += Time.deltaTime;
if (_pressedTime >= MIN_PRESS_TIME)
{
MouseAction.Invoke(Define.MouseEvent.LeftPress);
isPressed = false;
}
}
else
{
if (isPressed && MouseAction != null)
MouseAction.Invoke(Define.MouseEvent.LeftClick);
if (_pressedTime >= MIN_PRESS_TIME && MouseAction != null)
MouseAction.Invoke(Define.MouseEvent.LeftPressUp);
isPressed = false;
_pressedTime = 0f;
}
}
}
임의로 정해놓은 시간(0.2초) 이상 누르고 있을 경우 click이 아니라 press로 invoke 해준다
누르고 있을 때 호출하는 Press와 누르고 있다가 뗐을 때 호출하는 PressUp을 각각 만들어두었다
* onUpdate는 Managers 스크립트에서 FixedUpdate마다 호출시키는 상태
'Programing > Unity(C#)' 카테고리의 다른 글
[C#] json 데이터 파싱하기 (0) | 2024.04.09 |
---|---|
[Unity] 특정 방향으로 2D 오브젝트 회전시키기 (0) | 2024.04.06 |
[Unity] 캐릭터의 움직임이 버벅거리는 문제(Rigidbody Interpolate) (0) | 2024.03.31 |
[C#] Coroutine 사용 (0) | 2024.03.22 |
[C#] 반복문 내에서 List 요소 삭제 시 주의할 점 (0) | 2024.03.21 |