예제 #1
0
        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);
            });
        }