Unity中的负面eulerAngles

时间:2015-04-06 16:02:05

标签: c# unity3d 3d

我正在为团结游戏创造一个基本的车轮4.6。我使用steerAngle转向为我的车轮获得了eulerAngles.z。但是有一个问题,每当我顺时针转动转向然后它给我的角度是360,359,358等等。我想要-1,-2,-3等东西。有没有办法实现这个目标?

BTW这是我到目前为止所做的:

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

3 个答案:

答案 0 :(得分:0)

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

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;
    }
}

答案 1 :(得分:0)

if (steerAngle > 180)
    steerAngle -= 360;

答案 2 :(得分:0)

您可以检查角度是否小于180度返回相同的值,但是如果大于180度则应为-360。因此,现在您可以获得负值。

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