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;
我正在 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;