private void Start() { var inputmgr = InputManager.Instance; var joystick = inputmgr.moveJoystick; // 컨트롤러 놓은 경우 // 0,0이 계속 발생해도 한번만 처리 var stopStream = joystick.InputChanged .DistinctUntilChanged().Where(v => v == Vector3.zero); // 컨트롤러를 잡고 있는 동안에는 같은 값이 나올수 있다 var moveStream = joystick.InputChanged .Where(v => v != Vector3.zero); stopStream.Subscribe(dir => { var currPos = player.transform.position; // 이동방향이 없다 = 현위치를 도착으로 취급 var action = InputAction.CreateMove(currPos); inputmgr.PushMove(action); }); moveStream.Subscribe(dir => { var currPos = player.transform.position; var delta = dir * 5; var nextPos = currPos + delta; var action = InputAction.CreateMove(nextPos); inputmgr.PushMove(action); }); }