#c# #unity3d
#c# #unity3d
Вопрос:
Я пытаюсь повернуть камеру моего проигрывателя, но приведенный ниже код не работает. Я использую это для сохранения / загрузки игровых функций
public void ButtonSave()
{
PlayerPrefs.SetFloat("transform position x" currentActiveSlot, playerTransform.position.x);
PlayerPrefs.SetFloat("transform position y" currentActiveSlot, playerTransform.position.y);
PlayerPrefs.SetFloat("transform position z" currentActiveSlot, playerTransform.position.z);
// Save all 4 values for the quaternion
PlayerPrefs.SetFloat("transform rotation x" currentActiveSlot, playerTransform.rotation.x);
PlayerPrefs.SetFloat("transform rotation y" currentActiveSlot, playerTransform.rotation.y);
PlayerPrefs.SetFloat("transform rotation z" currentActiveSlot, playerTransform.rotation.z);
PlayerPrefs.SetFloat("transform rotation w" currentActiveSlot, playerTransform.rotation.w);
PlayerPrefs.Save();
}
public void ButtonLoad() // call via canvas UI load button
{
// this work
playerTransform.position = new Vector3(
PlayerPrefs.GetFloat("transform position x" currentActiveSlot),
PlayerPrefs.GetFloat("transform position y" currentActiveSlot),
PlayerPrefs.GetFloat("transform position z" currentActiveSlot));
// this don't work
Quaternion savedRotation = new Quaternion(
PlayerPrefs.GetFloat("transform rotation x" currentActiveSlot),
PlayerPrefs.GetFloat("transform rotation y" currentActiveSlot),
PlayerPrefs.GetFloat("transform rotation z" currentActiveSlot),
PlayerPrefs.GetFloat("transform rotation w" currentActiveSlot));
playerTransform.rotation = savedRotation;
}
Пробовал приведенные ниже комбинации, но они тоже не работают
playerTransform.Rotate(new Vector3(1, 2, 3));
playerTransform.Rotate(1, 2, 3);
playerTransform.eulerAngles = new Vector3(1, 2, 3);
И после запуска симуляции я не могу повернуть его руками
Правка1
Комментарии:
1. Если вы не можете «вращать руками», у вас наверняка есть функция обновления, устанавливающая поворот и переопределяющая то, что вы пытаетесь установить из редактора.
2. Я думаю, вы правы, но я не могу найти это место = (
3. Вам придется действовать шаг за шагом: отключите различные сценарии для вашего персонажа, а затем, когда вы узнаете, какой из них задает поворот, покопайтесь в коде, чтобы найти что-то вроде
transform.rotation = ....
4. @Hellium Я отключил все объекты на сцене, и я могу изменить transform.rotation только при отключении подтверждения от первого лица игрока, как в правке 1. Когда я включаю его снова, все данные вращения принимают значения по умолчанию
5. Если поворот задан
First Person Controller
скриптом, найдите строку, задающую поворот в исходном коде (что-то вродеtransform.rotation =
илиtransform.Rotate
. Вам придется изменить исходный код скрипта таким образом, чтобы учесть фрагмент кода, который вы написали в своем вопросе. Я больше не смогу вам помочь.