Controls do not transfer from Editor to Build
I'm fairly new to Unity and also coding in general, but I have been having problems with the final built product of my Unity project. I've been changing the controls in my script to work with an Xbox controller and all of them work perfectly in the Editor, including in Game Mode when testing it out inside the Unity program. However, after building the application, some of my controls don't transfer over properly.
Firstly, my Sprint feature, wherein holding the LS button while moving the LS joystick creates a faster horizontal movement than if just moving the joystick, completely does not work. I've configured the same feature to another set of controls, however it was in a different section of the code, and that works.
Sprint that doesn't work:
if (EnableLinearMovement)
{
var NaturalSpeed = 1.0f;
float tempSpeed;
var SpeedMultiplier = 5.0f; //for speed increase while sprinting
Vector3 moveDirection = Vector3.zero; /determines which direction we should be moving towards
{
moveDirection = Vector3.zero;
tempSpeed = NaturalSpeed;
moveDirection.x += Input.GetAxis("Horizontal");
moveDirection.z += Input.GetAxis("Vertical");
if (Input.GetButton("XboxLSButton"))
{
tempSpeed *= SpeedMultiplier; //increases speed for sprint feature
}
transform.Translate(moveDirection.normalized * tempSpeed * Time.deltaTime); //moves player to correct direction at the determined speed (with or without sprint)
}
Secondly, my Fly Mode feature. My left and right triggers control moving up and down after being activated by the A button, however though my Fly Down mode works perfectly (vertically down), my Fly Up mode moves vertically up and backwards, going in a diagonal.
Fly mode:
UpdateMovement();
Vector3 moveDirection = Vector3.zero;
float motorDamp = (1.0f + (Damping * SimulationRate * Time.deltaTime));
MoveThrottle.x /= motorDamp;
MoveThrottle.y = (MoveThrottle.y > 0.0f) ? (MoveThrottle.y / motorDamp) : MoveThrottle.y;
MoveThrottle.z /= motorDamp;
moveDirection += MoveThrottle * SimulationRate * Time.deltaTime;
// Gravity
if (Controller.isGrounded && FallSpeed <= 0)
FallSpeed -= ((Physics.gravity.y * (GravityModifier * 0.002f))); // FallSpeed = ((Physics.gravity.y * (GravityModifier)));
else
FallSpeed += ((Physics.gravity.y * (GravityModifier * 0.002f)) * SimulationRate * Time.deltaTime);
// Fly mode
if (!isFlyMode)
{
moveDirection.y += FallSpeed * SimulationRate * Time.deltaTime;
}
if (isFlyMode)
{
if (isFlyingUp)
{
moveDirection.y += verticalSpeed * Time.deltaTime;
}
else if (isFlyingDown)
{
moveDirection.y -= verticalSpeed * Time.deltaTime;
}
}
{
float buttonFlyUp = Input.GetAxis("XboxLT");
float buttonFlyDown = Input.GetAxis("XboxRT");
if (isFlyMode)
{
if (buttonFlyUp != 0)
{
isFlyingUp = true;
isFlyingDown = false;
}
else if (buttonFlyDown != 0)
{
isFlyingDown = true;
isFlyingUp = false;
}
else
{
isFlyingDown = false;
isFlyingUp = false;
}
}
}
}
If it helps, I'm working with an Oculus Rift.
Thanks in advance!
Your answer
Follow this Question
Related Questions
Oculus Rift DK2 with runtime 1.8.0 not working in Unity 5.4.1 0 Answers
Is there any way to create shortcut with exe file together when we build the project? 0 Answers
ItextSharp generates pdf file of 0 bytes in PC build. Works in editor. 0 Answers