Ошибка: «Не удается неявно преобразовать тип в unity.Quaternion» - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в единице и пытаюсь повернуть куб, но я получаю ошибку в заголовке

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);
}

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Ошибка не имеет ничего общего с единством. Это основы программирования.

То, что вам говорят, это то, что вы пытаетесь присвоить один объект другому, но эти два имеют разные типы.

Итак, давайте разберем ваш код:

Transform.rotation - это свойство в единстве, тип Quaternion. То, что вы пытаетесь сделать, это установить значение этого свойства на (rotatex, rotatey, rotatez). К какому типу относится ваша ценность (rotatex, rotatey, rotatez)? - не Quaternion.

Теперь, чтобы упростить его, допустим, вы объявляете переменную следующим образом:

int myVar;

Вы сказали, что переменная с именем myVar имеет тип int (как вращениеis Quaternion).

Теперь, когда вы попробуете код, подобный этому:

myVar = "Something";

, вы получите ошибку Can not implicitly convert type to int, потому что вы пытаетесь поставить string на место для int. Вы пытаетесь поместить куб в пространство для квадрата.

0 голосов
/ 25 октября 2019

Вы забыли добавить к своим новым значениям (rotatex, rotatey, rotatez), new Quaternion, именно так вы исправите неявную ошибку преобразования, но, чтобы сделать ротацию, вы можете полностью изменить свой код на что-то вроде:

if (Input.GetKey(KeyCode.W))
{
    transform.rotation *= Quaternion.Euler(rotate_speed, 0, 0);
}

Это будет вращать объект на оси X на заданной скорости вращения, то же самое можно сделать для Y и Z, просто поместите rotate_speed в соответствующее место в функции Euler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...