Я пишу простую игру в Unity 3D с C# в качестве языка сценариев. Мне нужно повернуть камеру на 180 градусов. Странным является первый звонок Quarterion.RotateTowards работает, а другой - нет, хотя он должен быть просто ссылкой на тот же объект.Проблема Strange RotateToward в Unity 3D
public class ChangeCamera : MonoBehaviour {
Quaternion firstMinionCameraRot, secondMinionCameraRot;
Quaternion newRot;
// Use this for initialization
void Start() {
Quaternion firstMinionCameraRot = new Quaternion(0.0f, 1.0f, -0.3f, 0.0f);
Quaternion secondMinionCameraRot = new Quaternion(-0.3f, 0.0f, 0.0f, -1.0f);
}
// Update is called once per frame
void Update() {
newRot = this.transform.rotation;
// This one works
newRot = Quaternion.RotateTowards(newRot, new Quaternion(-0.3f, 0.0f, 0.0f, -1.0f), 0.05f * Time.deltaTime);
// This one doesn't
newRot = Quaternion.RotateTowards(newRot, secondMinionCameraRot, 50.0f * Time.deltaTime);
newRot = this.transform.rotation;
}
EDIT: Я делаю окончательное назначение newRot = this.transform.rotation; Я пропустил эту строку при подготовке фрагмента кода. Когда я использую второй вариант (где Quaterion был инициализирован в начале, исключение не выбрасывается, оно просто не выполняет никакого вращения).
Что значит, что это не работает? Выбрасывает исключение? Когда ваш код написан, ничего не происходит с возвращаемым Quarterion newRot. Если вы хотите, чтобы метод RotateTowards выполнял поведение объекта, вы должны назначить возвращаемое значение transform.rotation. Другими словами, вам не хватает myGameObject.transform.rotation = newRot; – HBomb
не используют кватернионы по какой-либо причине. просто используйте 'Rotate' (или, возможно,' RotateAround'), одна из самых смешных вещей о Unity заключается в том, что они упоминают «кватернионы» в руководстве. они абсолютно не относятся ко всему. если вы хотите что-то повернуть, используйте 'Rotate' – Fattie
[Этот ответ] (http://gamedev.stackexchange.com/questions/115691/unity-camera-tilt/115693#115693) может помочь вам –