有一个圆,需要按一下按钮旋转,并沿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));
}
}
答案 0 :(得分:0)
不正常工作是什么意思。你的意思是它根本不动吗?如果它完全不动,请检查是否将圆形游戏对象拖到了“检查器”中的“游戏对象”字段中。还有一件事,为什么不调用“ RotateActive”功能?
答案 1 :(得分:0)
您正在尝试从四元数获取旋转,这不是对象的角度。相反,您应该使用:
CircleRotateZ = Circle.transform.eulerAngles.z;
此外,您当前的旋转方式将使其随着时间的推移而加速。 “旋转”功能将对象旋转一定量,而不是给定数量,因此,如果您仅想以旋转速度旋转,则应使用:
Circle.transform.Rotate(new Vector3(0, 0, RotationSpeed));