02-09-2021 08:32 AM
Solved! Go to Solution.
04-05-2021 07:49 AM
I figured this one out. The problem was with the following statement:
if (targetDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 primary2DAxisValue) && primary2DAxisValue != Vector2.zero)
Specifically, the problem was caused by - primary2DAxisValue != Vector2.zero. Apparently, the primary 2d axis value is rarely exactly zero. There is always a small amount of drift, which was causing the player to move when I let go of the control stick. I fixed this by replacing the problematic statement with:
if (targetDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 primary2DAxisValue) && TestSensitivity(primary2DAxisValue))
Then adding a method like the below:
private bool TestSensitivity(Vector2 inputToTest)
{
if ((inputToTest.x > primary2DAxisSensitivity || inputToTest.x < -primary2DAxisSensitivity) && (inputToTest.y > primary2DAxisSensitivity || inputToTest.y < -primary2DAxisSensitivity))
{
return true;
} else
{
return false;
}
}
You'll need to define a float, primary2DAxisSensitivity somewhere. I chose 0.01 and things worked well.
04-05-2021 07:49 AM
I figured this one out. The problem was with the following statement:
if (targetDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 primary2DAxisValue) && primary2DAxisValue != Vector2.zero)
Specifically, the problem was caused by - primary2DAxisValue != Vector2.zero. Apparently, the primary 2d axis value is rarely exactly zero. There is always a small amount of drift, which was causing the player to move when I let go of the control stick. I fixed this by replacing the problematic statement with:
if (targetDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 primary2DAxisValue) && TestSensitivity(primary2DAxisValue))
Then adding a method like the below:
private bool TestSensitivity(Vector2 inputToTest)
{
if ((inputToTest.x > primary2DAxisSensitivity || inputToTest.x < -primary2DAxisSensitivity) && (inputToTest.y > primary2DAxisSensitivity || inputToTest.y < -primary2DAxisSensitivity))
{
return true;
} else
{
return false;
}
}
You'll need to define a float, primary2DAxisSensitivity somewhere. I chose 0.01 and things worked well.