C# 错误:";无法将类型隐式转换为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

我是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_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