I'm writing a script to rotate an object in my game. It takes the objects starting rotation and adds more rotation to it dependent on the object which is rotating it (so if the object thats rotating it turns 20 degrees, so does the object. The script works fine for rotations between 0-180, but at 181 to about 356 it goes crazy, rapidly flipping the object back and forth as if it was mirroring the object on and off rapidly.
Here's my code - I looked through, and I can't find a flaw with it. Some of the things which may seem unnecessary have probably been added in an attempt to fix this issue.
var turnRot: float;
var beingTurned: boolean = false;
var fiducial: Transform;
var startingRot: float;
var modifiedRot: float;
function Update ()
{
//if this object is selected, find the amount of rotation applied
if (beingTurned)
{
turnRot = fiducial.GetComponent(Movementscript).currentRot;
if (turnRot < 0)
{
modifiedRot = (360 + turnRot);
} else
{ modifiedRot = turnRot;
}
Debug.Log (modifiedRot);
transform.localRotation.eulerAngles.x = (startingRot +modifiedRot);
}
}
function Turning () {
beingTurned = true;
startingRot = transform.localRotation.eulerAngles.x;
Debug.Log ("I am being turned! :D");
}
function NotTurning () {
beingTurned = false;
Debug.Log ("I am not being turned :(" );
}
Basically, if the object is being turned, it gets the amount of rotation to add, and adds it to it's own starting rotation. The modifiedRot bit is just there to see if there was an issue with the rotation value switching between positive and negative, but it's not. the Debug.Log for modifiedRot outputs as always positive, so it's not that either.
All help is appreciated! Thanks!
Cheers, that sorted it.
– anon38117566Great, another learnt thing ;)
– anon19470065