private void UpdateAnalogButtonValue() { float axis = m_type == InputType.AnalogButton ? Input.GetAxisRaw(m_rawAxisName) : GamepadState.GetAxisRaw(m_gamepadAxis, m_gamepadIndex); axis = axis * (m_invert ? -1 : 1); 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; } } }
///<summary> /// Returns raw input with no sensitivity or smoothing applyed. /// </summary> public float?GetAxisRaw() { float?axis = null; if (m_type == InputType.DigitalAxis) { if (Input.GetKey(m_positive)) { axis = m_invert ? -AXIS_POSITIVE : AXIS_POSITIVE; } else if (Input.GetKey(m_negative)) { axis = m_invert ? -AXIS_NEGATIVE : AXIS_NEGATIVE; } } else if (m_type == InputType.MouseAxis || m_type == InputType.AnalogAxis) { if (m_rawAxisName != null) { axis = Input.GetAxisRaw(m_rawAxisName); axis = m_invert ? -axis : axis; } } else if (m_type == InputType.GamepadAxis) { axis = GamepadState.GetAxisRaw(m_gamepadAxis, m_gamepadIndex); axis = m_invert ? -axis : axis; } if (axis.HasValue && Mathf.Abs(axis.Value) <= 0.0f) { axis = null; } return(axis); }