docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class StickControl

    A two-axis thumbstick control that can act as both a vector and a four-way dpad.

    Inheritance
    object
    InputControl
    InputControl<Vector2>
    Vector2Control
    StickControl
    Inherited Members
    Vector2Control.x
    Vector2Control.y
    Vector2Control.ReadUnprocessedValueFromState(void*)
    Vector2Control.WriteValueIntoState(Vector2, void*)
    Vector2Control.EvaluateMagnitude(void*)
    Vector2Control.CalculateOptimizedControlDataType()
    InputControl<Vector2>.valueType
    InputControl<Vector2>.valueSizeInBytes
    InputControl<Vector2>.value
    InputControl<Vector2>.ReadValue()
    InputControl<Vector2>.ReadValueFromPreviousFrame()
    InputControl<Vector2>.ReadDefaultValue()
    InputControl<Vector2>.ReadValueFromState(void*)
    InputControl<Vector2>.ReadValueFromStateWithCaching(void*)
    InputControl<Vector2>.ReadUnprocessedValueFromStateWithCaching(void*)
    InputControl<Vector2>.ReadUnprocessedValue()
    InputControl<Vector2>.ReadValueFromStateAsObject(void*)
    InputControl<Vector2>.ReadValueFromStateIntoBuffer(void*, void*, int)
    InputControl<Vector2>.WriteValueFromBufferIntoState(void*, int, void*)
    InputControl<Vector2>.WriteValueFromObjectIntoState(object, void*)
    InputControl<Vector2>.ReadValueFromBufferAsObject(void*, int)
    InputControl<Vector2>.CompareValue(void*, void*)
    InputControl<Vector2>.ProcessValue(Vector2)
    InputControl<Vector2>.ProcessValue(ref Vector2)
    InputControl.name
    InputControl.displayName
    InputControl.shortDisplayName
    InputControl.path
    InputControl.layout
    InputControl.variants
    InputControl.device
    InputControl.parent
    InputControl.children
    InputControl.usages
    InputControl.aliases
    InputControl.stateBlock
    InputControl.noisy
    InputControl.synthetic
    InputControl.this[string]
    InputControl.magnitude
    InputControl.ToString()
    InputControl.EvaluateMagnitude()
    InputControl.TryGetChildControl(string)
    InputControl.TryGetChildControl<TControl>(string)
    InputControl.GetChildControl(string)
    InputControl.GetChildControl<TControl>(string)
    InputControl.RefreshConfigurationIfNeeded()
    InputControl.RefreshConfiguration()
    InputControl.m_StateBlock
    InputControl.currentStatePtr
    InputControl.previousFrameStatePtr
    InputControl.defaultStatePtr
    InputControl.noiseMaskPtr
    InputControl.stateOffsetRelativeToDeviceRoot
    InputControl.optimizedControlDataType
    InputControl.ApplyParameterChanges()
    Namespace: UnityEngine.InputSystem.Controls
    Assembly: Unity.InputSystem.dll
    Syntax
    public class StickControl : Vector2Control
    Remarks

    Stick controls are used to represent the thumbsticks on gamepads (see leftStick and rightStick) as well as the main stick control of joysticks (see stick).

    Essentially, a stick is an extended Vector2 control that can function either as a combined 2D vector, as independent vertical and horizontal axes, or as four individual, directional buttons. The following example demonstrates this based on the gamepad's left stick.

    // Read stick as a combined 2D vector.
    Gamepad.current.leftStick.ReadValue();
    // Read X and Y axis of stick individually.
    Gamepad.current.leftStick.x.ReadValue();
    Gamepad.current.leftStick.y.ReadValue();
    // Read the stick as four individual directional buttons.
    Gamepad.current.leftStick.up.ReadValue();
    Gamepad.current.leftStick.down.ReadValue();
    Gamepad.current.leftStick.left.ReadValue();
    Gamepad.current.leftStick.right.ReadValue();

    In terms of memory, a stick controls is still just from one value for the X axis and one value for the Y axis.

    Unlike dpads (see DpadControl), sticks will usually have deadzone processors (see StickDeadzoneProcessor) applied to them to get rid of noise around the resting point of the stick. The X and Y axis also have deadzones applied to them by default (AxisDeadzoneProcessor). Note, however, that the deadzoning of individual axes is different from the deadzoning applied to the stick as a whole and thus does not have to result in exactly the same values. Deadzoning of individual axes is linear (i.e. the result is simply clamped and normalized back into [0..1] range) whereas the deadzoning of sticks is radial (i.e. the length of the vector is taken into account which means that both the X and Y axis contribute).

    Properties

    down

    A synthetic button representing the lower half of the stick's Y axis, i.e. the -1 to 0 range (inverted).

    Declaration
    public ButtonControl down { get; set; }
    Property Value
    Type Description
    ButtonControl

    Control representing the stick's lower half Y axis.

    Remarks

    The control is marked as synthetic.

    left

    A synthetic button representing the left half of the stick's X axis, i.e. the -1 to 0 range (inverted).

    Declaration
    public ButtonControl left { get; set; }
    Property Value
    Type Description
    ButtonControl

    Control representing the stick's left half X axis.

    Remarks

    The control is marked as synthetic.

    right

    A synthetic button representing the right half of the stick's X axis, i.e. the 0 to 1 range.

    Declaration
    public ButtonControl right { get; set; }
    Property Value
    Type Description
    ButtonControl

    Control representing the stick's right half X axis.

    Remarks

    The control is marked as synthetic.

    up

    A synthetic button representing the upper half of the stick's Y axis, i.e. the 0 to 1 range.

    Declaration
    public ButtonControl up { get; set; }
    Property Value
    Type Description
    ButtonControl

    Control representing the stick's upper half Y axis.

    Remarks

    The control is marked as synthetic.

    Methods

    FinishSetup()

    Perform final initialization tasks after the control hierarchy has been put into place.

    Declaration
    protected override void FinishSetup()
    Overrides
    Vector2Control.FinishSetup()
    Remarks

    This method can be overridden to perform control- or device-specific setup work. The most common use case is for looking up child controls and storing them in local getters.

    public class MyDevice : InputDevice
    {
    public ButtonControl button { get; private set; }
    public AxisControl axis { get; private set; }

             protected override void OnFinishSetup()
             {
                 // Cache controls in getters.
                 button = GetChildControl("button");
                 axis = GetChildControl("axis");
             }
         }</code></pre></example>
    

    Extension Methods

    InputControlExtensions.CheckStateIsAtDefault(InputControl)
    InputControlExtensions.CheckStateIsAtDefault(InputControl, void*, void*)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*, void*)
    InputControlExtensions.CompareStateIgnoringNoise(InputControl, void*)
    InputControlExtensions.FindControlsRecursive<TControl>(InputControl, IList<TControl>, Func<TControl, bool>)
    InputControlExtensions.FindInParentChain<TControl>(InputControl)
    InputControlExtensions.GetStatePtrFromStateEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInState(InputControl, void*)
    InputControlExtensions.IsActuated(InputControl, float)
    InputControlExtensions.IsPressed(InputControl, float)
    InputControlExtensions.ReadDefaultValueAsObject(InputControl)
    InputControlExtensions.ReadValueAsObject(InputControl)
    InputControlExtensions.ReadValueFromEventAsObject(InputControl, InputEventPtr)
    InputControlExtensions.ReadValueIntoBuffer(InputControl, void*, int)
    InputControlExtensions.ResetToDefaultStateInEvent(InputControl, InputEventPtr)
    InputControlExtensions.WriteValueFromObjectIntoEvent(InputControl, InputEventPtr, object)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState(InputControl, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl, TValue, void*)
    InputControlExtensions.QueueValueChange<TValue>(InputControl<TValue>, TValue, double)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl<TValue>, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, TValue, void*)
    InputControlExtensions.WriteValueIntoState<TValue, TState>(InputControl<TValue>, TValue, ref TState)

    Did you find this page useful? Please give it a rating:

    Thanks for rating this page!

    Report a problem on this page

    What kind of problem would you like to report?

    • This page needs code samples
    • Code samples do not work
    • Information is missing
    • Information is incorrect
    • Information is unclear or confusing
    • There is a spelling/grammar error on this page
    • Something else

    Thanks for letting us know! This page has been marked for review based on your feedback.

    If you have time, you can provide more information to help us fix the problem faster.

    Provide more information

    You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:

    You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:

    You've told us there is information missing from this page. Please tell us more about what's missing:

    You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:

    You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:

    You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:

    You've told us this page has a problem. Please tell us more about what's wrong:

    Thank you for helping to make the Unity documentation better!

    Your feedback has been submitted as a ticket for our documentation team to review.

    We are not able to reply to every ticket submitted.

    In This Article
    • Properties
      • down
      • left
      • right
      • up
    • Methods
      • FinishSetup()
    • Extension Methods
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)