Unity 中的负 eulerAngles

Negative eulerAngles in Unity

我正在 unity 4.6 中为我的游戏创建一个基本的车轮。我的车轮使用 eulerAngles.z 的转向得到 steerAngle。但是有一个问题,每当我顺时针旋转转向然后角度它给我是 360,359,358 等,我想要 -1、-2、-3 等。有什么办法可以实现吗?

顺便说一句,这是我到目前为止所做的:

    float steerAngle = (steering.transform.eulerAngles.z);
    frontLeftWheel.steerAngle = steerAngle;
    frontRightwheel.steerAngle = steerAngle;

你能创建一个扩展方法来实现这个吗?

frontLeftWheel.steerAngle = steerAngle.Adjusted();

...

public static class Extensions
{
    private const float MAX_VAL = 360.0;
    public static float AdjustedAngle(
        this Vector3 eulerAngle, int idx = 2)
    {
        /* idx 0 = x
               1 = y
               2 = z */
        //float axesVal = idx == 0 
        //    ? eulerAngle.x 
        //    : idx == 1 ? eulerAngle.y : eulerAngle.z;

        /* need to differentiate between a valid 359, 
           and an invalid 359, which should be returned as 
           359 - 360 or -1 */
        //var valid = <do some work>; 

        // return valid ? axesVal : axesVal - MAX_VAL;
    }
}
if (steerAngle > 180)
    steerAngle -= 360;

你可以检查角度是否小于 180 度 return 相同的值,但如果大于 180 度你应该 -360。所以,现在你可以得到负值了。

float steerAngle = (steering.transform.eulerAngles.z < 180f) ? steering.transform.eulerAngles.z : steering.transform.eulerAngles.z - 360;