- Home /
Why this simple code doesnt work?
Hello guys, I'm a bit of beginner to Unity and after hours and hours of trying I decided to ask some help here. I have this piece of code (which is simple vehicle physics) which works very well on Windows:
void FixedUpdate () {
//Input
float inputGas = Input.GetAxisRaw("Horizontal"); //
JointMotor motor = LeftWheel.hingeJoint.motor;
motor.force = (inputGas!=0?1:0) * 30;
motor.freeSpin = true;
motor.targetVelocity = -inputGas * 4000;
LeftWheel.hingeJoint.useMotor = inputGas != 0;
LeftWheel.hingeJoint.motor = motor;
RightWheel.hingeJoint.useMotor = inputGas != 0;
RightWheel.hingeJoint.motor = motor;
rigidbody.AddRelativeTorque(0, 0, -inputGas * 3000);
} Good, it works because h is either -1 or 0 or +1 and it's constant while pressing the button.
But then I want to make it for touchscreens and the physics starts doing some very weird stuff (like switching between h=1 and h=0 very very fast or something) , and h is +1 apparently:
void FixedUpdate () {
//Input foreach (Touch touch in Input.touches) { if (gas.HitTest(touch.position) && touch.phase == TouchPhase.Stationary) { inputGas = 1; } else if (gas.HitTest(touch.position) && touch.phase == TouchPhase.Ended) { inputGas = 0; } }
// JointMotor motor = LeftWheel.hingeJoint.motor; motor.force = (inputGas!=0?1:0) 30; motor.freeSpin = true; motor.targetVelocity = -inputGas 4000;
LeftWheel.hingeJoint.useMotor = inputGas != 0;
LeftWheel.hingeJoint.motor = motor;
RightWheel.hingeJoint.useMotor = inputGas != 0;
RightWheel.hingeJoint.motor = motor;
rigidbody.AddRelativeTorque(0, 0, -inputGas * 3000);
}
What I am doing wrong? I have tried putting the input in a Update() function to be independent of the framerate, but some weird stuff is still happening.
Thanks a lot guys!
Your answer
Follow this Question
Related Questions
Switching a GUIbuttons texture when holding your finger on it? 1 Answer
(Mobile) Touch anywhere on screen EXCEPT button 3 Answers
Button reaction time problem 1 Answer
Android GUITexture Touch 0 Answers