예제 #1
0
        private void UpdateAnalogButtonValue()
        {
            float axis = m_type == InputType.AnalogButton ?
                         Input.GetAxis(m_rawAxisName) :
                         GamepadState.GetAxis(m_gamepadAxis, m_gamepadIndex);

            axis = m_invert ? -axis : axis;

            if (axis > m_deadZone)
            {
                if (m_analogButtonState == ButtonState.Released || m_analogButtonState == ButtonState.JustReleased)
                {
                    m_analogButtonState = ButtonState.JustPressed;
                }
                else if (m_analogButtonState == ButtonState.JustPressed)
                {
                    m_analogButtonState = ButtonState.Pressed;
                }
            }
            else
            {
                if (m_analogButtonState == ButtonState.Pressed || m_analogButtonState == ButtonState.JustPressed)
                {
                    m_analogButtonState = ButtonState.JustReleased;
                }
                else if (m_analogButtonState == ButtonState.JustReleased)
                {
                    m_analogButtonState = ButtonState.Released;
                }
            }
        }
예제 #2
0
        public float?GetAxis()
        {
            float?axis = null;

            if (m_type == InputType.DigitalAxis || m_type == InputType.RemoteAxis)
            {
                axis = m_invert ? -m_value : m_value;
            }
            else if (m_type == InputType.MouseAxis)
            {
                if (m_rawAxisName != null)
                {
                    axis = Input.GetAxis(m_rawAxisName) * m_sensitivity;
                    axis = m_invert ? -axis : axis;
                }
            }
            else if (m_type == InputType.AnalogAxis)
            {
                if (m_rawAxisName != null)
                {
                    axis = Input.GetAxis(m_rawAxisName);
                    if (Mathf.Abs(axis.Value) < m_deadZone)
                    {
                        axis = AXIS_NEUTRAL;
                    }

                    axis = Mathf.Clamp(axis.Value * m_sensitivity, -1, 1);
                    axis = m_invert ? -axis : axis;
                }
            }
            else if (m_type == InputType.GamepadAxis)
            {
                axis = GamepadState.GetAxis(m_gamepadAxis, m_gamepadIndex);
                if (Mathf.Abs(axis.Value) < m_deadZone)
                {
                    axis = AXIS_NEUTRAL;
                }

                axis = Mathf.Clamp(axis.Value * m_sensitivity, -1, 1);
                axis = m_invert ? -axis : axis;
            }

            if (axis.HasValue && Mathf.Abs(axis.Value) <= 0.0f)
            {
                axis = null;
            }

            return(axis);
        }