- Home /
Problem about Rotating the Character
So this is an isometric game...And I already have made a script, that handles the rotation of the character.Basically wha I want is interpolates/transition when rotating the character,so inside the FixedUpdate:
if (transform.eulerAngles.y != targetDir) {
if (transform.eulerAngles.y >= targetDir+(threshold) || transform.eulerAngles.y <= targetDir-(threshold)){
if (transform.eulerAngles.y < transform.eulerAngles.y-targetDir){
transform.Rotate(-Vector3.up*turnSpeed,Space.Self);}
if (transform.eulerAngles.y > transform.eulerAngles.y-targetDir){
transform.Rotate(Vector3.up*turnSpeed,Space.Self);}
}
else{
transform.eulerAngles = new Vector3(0,targetDir,0);}}
And whenever I press a key(the controls) I got something like this:
if (Input.GetKey("w")){
targetDir = 45f;
But the problem is...for example the current rotation is equal to 315(facing left) and I press the W key(which sets the targetDir = 45f) the rotation interpolates from 315 to 225 to 180 to 45 In SHORT COUNTER-CLOCKWISE.Well it's much simpler and better if it goes clockwise right? But I want it to rotate to it's nearest 45 degree...
The reason why I don't use lerpAngle for this,is because it's not accurate,I mean sometimes it's stuck like 44.9999 something like that... Any help?Thanks
Answer by amiel_ace · Nov 01, 2014 at 06:52 AM
Ok never mind,I solved it, I went back, and use lerp again. Then just round it off...
Your answer
Follow this Question
Related Questions
How do you smoothly transition/Lerp into a new rotation? 3 Answers
How to rotate 90 degrees from 270 degrees to 0 with lerp? c# 1 Answer
How to ROTATE an object without slowing the ends (lerp) 3 Answers
Unity Quaternion Problem (Should be A Bug?) 1 Answer
How to Rotate a CUBE by 90 Degrees when a key is pressed 1 Answer