if(transform.rotation.z< 90)不起作用

时间:2014-02-11 18:41:39

标签: c# unity3d

我被困住了,不知道为什么。这是我目前的代码:

if(rigidbody2D.velocity.y >= 1 && transform.rotation.z < 90)
{
    rigidbody2D.angularVelocity = 200f;

}
else if (rigidbody2D.velocity.y < 0 && transform.rotation.z > -90)
{
    rigidbody2D.angularVelocity = -200f;
}

除了transform.rotation.z之外,它完全正常工作,它完全忽略了它就好像它不存在一样。

我想要的是:

如果物体速度大于1(即向上行进)且物体旋转小于90°,​​则将角速度设定为200f。

否则如果物体速度小于-1(即向下行进)且物体旋转超过-90°,则将角速度设定为-200°。

2 个答案:

答案 0 :(得分:6)

rotation值是四元数而不是度数。您可能希望使用eulerAngles来获得度数的旋转。

所以你可以使用类似的东西:

transform.eulerAngles.z < 90

您不应该使用负值,而不是-90使用270

transform.eulerAngles.z > 270

答案 1 :(得分:0)

所以我在Unity中出现了一个问题,精灵掉了下来(我不想使用固定角度)。所以这就是我提出的:

public float MaxAngle = 45;
void FixedUpdate()
{
    if (transform.eulerAngles.z > MaxAngle)
    {
        if (transform.eulerAngles.z > (360 - MaxAngle) & transform.localScale.x < 0)
        { }
        else
            transform.rotation = Quaternion.Euler(0, 0, 0);
    }

可能更有效的方法,但它的工作原理。 &#34; transform.localScale.x&lt; 0)&#34;是因为我,我使用翻转运动。 我希望这有帮助。如果是这样,请给我一个Nickle:15Ubt8ebgaxQoesCALW8WEMoTEcxxV8KMt