Неверная ошибка назначения в Godot при попытке назначить кватернион?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неверная ошибка назначения в Godot при попытке назначить кватернион?

Сообщение Anonymous »

В Godot я получаю сообщение об ошибке «Недопустимое назначение ключа или свойства «базис» со значением типа «Кватернион» для базового объекта типа «Transform3D». из следующей функции:

Код: Выделить всё

    func _orient_character_to_direction(direction: Vector3, delta: float) -> void:
var left_axis = -local_gravity.cross(direction)
var rotation_basis := Basis(left_axis, -local_gravity, direction).orthonormalized()
_model.transform.basis = _model.transform.basis.get_rotation_quaternion().slerp(rotation_basis, delta * rotation_speed)
Я следую «учебнику», созданному для более старой версии Godot, и некоторые вещи не переносятся точно. Однако я не уверен, почему возникает эта конкретная ошибка, и, похоже, никто больше не занимается ею.
К моему большому замешательству, несмотря на то, что этот код написан на GDScript, я получаю эту ошибку:

E 0:00:00:0458 testplayer.gd:50 @ _orient_character_to_direction(): Базис [X: (0, 0, 0), Y: (0, 0, 0), Z: (0, 0, 0)] должен быть нормализован, чтобы его можно было привести к кватерниону. Используйте get_rotation_quaternion() или вызовите ortnormalized(), если базис содержит линейно независимые векторы.
Условие "!is_rotation()" истинно. Возврат: Quaternion()
core/math/basis.cpp:725 @ get_quaternion()
testplayer.gd:50 @ _orient_character_to_direction()
testplayer.gd:25 @ _integrate_forces ()

Из-за этой ошибки я попытался позвонить orthnormalized() на обоих концах назначения _model.transform.basis = _model.transform.basis.get_rotation_quaternion().slerp(rotation_basis, delta * Rotation_speed), но это был либо недопустимый вызов ( используя его после кватерниона) или он ничего не делал и ошибка сохранялась, в зависимости от того, где я его вызывал (пробовал везде, даже там, где это не имело смысла). Я также безуспешно пытался вызвать Normalized() для кватерниона.
Урок, которому я следую, можно найти здесь с конкретной функцией с ошибкой 2: 49.
Примечание. Я не силен в математике и впервые использую кватернионы, поэтому, если это очень простая ошибка, прошу прощения.

Подробнее здесь: https://stackoverflow.com/questions/791 ... quaternion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»