C# 错误:";无法将类型隐式转换为unity。四元数“;
我是unity的新手,正在尝试旋转立方体,但我在标题中发现了错误C# 错误:";无法将类型隐式转换为unity。四元数“;,c#,unity3d,C#,Unity3d,我是unity的新手,正在尝试旋转立方体,但我在标题中发现了错误 public Rigidbody rb; public float rotate_speed; public float rotatex = 0; public float rotatey = 0; public float rotatez = 0; void FixedUpdate() { if (Input.GetKey(KeyCode.W)) { rotatex += rotate_spee
public Rigidbody rb;
public float rotate_speed;
public float rotatex = 0;
public float rotatey = 0;
public float rotatez = 0;
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W))
{
rotatex += rotate_speed;
}
transform.rotation = (rotatex, rotatey, rotatez);
}
错误与统一无关。这是编程的基础 简单地说,它告诉您的是,您正试图将一个对象分配给另一个对象,但这两个对象的类型不同 让我们来破解你的密码:
Transform.rotation
是四元数类型的统一属性。您试图做的是将该属性值设置为(rotatex、rotatey、rotatez)
。您的值是什么类型的(rotatex、rotatey、rotatez)
?-不是四元数
现在,为了简化它,假设您声明如下变量:
int myVar;
myVar = "Something";
您说过名为myVar
的变量是int
类型(就像旋转是Quaternion
)
现在,当您尝试这样的代码时:
int myVar;
myVar = "Something";
它将删除您的错误
无法将类型隐式转换为int
,因为您正试图将字符串
放入int
的位置。您正在尝试将多维数据集拟合到正方形的空间中。您忘记了为新值添加前缀,(rotatex,rotatey,rotatez)
,新四元数
,这就是您修复隐式转换错误的方法,但要进行旋转,您可能需要将代码完全更改为以下内容:
if (Input.GetKey(KeyCode.W))
{
transform.rotation *= Quaternion.Euler(rotate_speed, 0, 0);
}
这将在X轴上以指定的旋转速度旋转对象,Y和Z也可以这样做,只需将
转速
放置在Euler
函数的适当位置。这里是您应该阅读的文档:此构造函数绝对不是用于创建旋转的…@Aybe,虽然我没有看到他询问如何进行旋转,但是为什么会发生隐式转换异常,我已经更改了代码,使其在X轴上旋转,就像他们想做的那样,因为他们只在代码中更改rotatex
。