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; } } }
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); }