GameObject在z轴上旋转不正确

时间:2020-10-02 01:59:25

标签: unity3d

有一个圆,需要按一下按钮旋转,并沿z轴以一定速度旋转,当旋转90度时,旋转将停止,但由于某种原因,旋转将无法正常工作

public GameObject Circle;

private bool RotationActive;

//rotation value at which the circle stops rotation
private float RotatePost;

private float RotationSpeed;

private float CircleRotateZ;

void Start()
{
    RotationActive = false;

    RotationSpeed = 0.5f;

    RotatePost = 90;
}

//function is bound to a button
public void RotateActive(){
    RotationActive = true;
}

void FixedUpdate()
{
    if (RotationActive == true)
    {
        CircleRotateZ = Circle.transform.rotation.z;

        //if the circle along the z axis is rotated more than Rotation Post...
        if (CircleRotateZ >= RotatePost )
        {
            RotatePost = CircleRotateZ + 90;
            RotationActive = false;
        }

        //assignment of a new coordinate
        Circle.transform.Rotate(new Vector3(0,0,RotationSpeed + CircleRotateZ));
    }
    
}

2 个答案:

答案 0 :(得分:0)

不正常工作是什么意思。你的意思是它根本不动吗?如果它完全不动,请检查是否将圆形游戏对象拖到了“检查器”中的“游戏对象”字段中。还有一件事,为什么不调用“ RotateActive”功能?

答案 1 :(得分:0)

您正在尝试从四元数获取旋转,这不是对象的角度。相反,您应该使用:

CircleRotateZ = Circle.transform.eulerAngles.z;

此外,您当前的旋转方式将使其随着时间的推移而加速。 “旋转”功能将对象旋转一定量,而不是给定数量,因此,如果您仅想以旋转速度旋转,则应使用:

Circle.transform.Rotate(new Vector3(0, 0, RotationSpeed));