void FollowRotationOf(GameObject obj) { if (obj) { Vector3 objRot = Vector3.zero; if (targetView.GetRotateAlongX() || im.IsGrounded) //also follow x rotation of the car is on the ground { rotX = obj.transform.rotation.eulerAngles.x; } else // if not on ground lerp the x rotation back to 0/360 for easy view { if (rotX < 180) { rotX = LerpFloatToX(rotX, 0); } else { rotX = LerpFloatToX(rotX, 360); } } if (targetView.GetRotateAlongY()) { rotY = obj.transform.rotation.eulerAngles.y; } else { if (rotY < 180) { rotY = LerpFloatToX(rotY, 0); } else { rotY = LerpFloatToX(rotY, 360); } } if (targetView.GetRotateAlongZ()) { rotZ = obj.transform.rotation.eulerAngles.z; } else { if (rotZ < 180) { rotZ = LerpFloatToX(rotZ, 0); } else { rotZ = LerpFloatToX(rotZ, 360); } } objRot = new Vector3(rotX, rotY, rotZ); newQuat.eulerAngles = objRot; transform.rotation = newQuat; } }