0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
||||||
1 | ||||||
Не изменяется переменная в transform.rotation11.09.2016, 12:03. Показов 12547. Ответов 11
Метки нет (Все метки)
Здравствуйте, такая штука, хочу реализовать поворот камеры на 90 градусов при нажатии кнопки pageup, т.е. чтобы человек нажал, и пока он держит, камера крутится. Когда поворот доходит до 90 градусов, камера должна перестать крутиться. Камера у меня крутится, условие я написал, но почему-то не хочет подхватывать это условие скрипт. Помогите разобраться, пожалуйста.
0
|
11.09.2016, 12:03 | |
Ответы с готовыми решениями:
11
Transform.rotation Transform.rotation. Углы При hover-е начинают прыгать уголки изображения, когда изменяется transform Переменная не изменяется |
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
|
11.09.2016, 12:18 | 2 |
Первым делом в апдейт закинь, что бы видеть выхлоп в консоль, что бы увидеть когда оно срабатывает, и как оно работает.
Debug.Log("transform.rotation.x = " + transform.rotation.x.ToString()); Debug.Log("transform.rotation.y = " + transform.rotation.y.ToString()); Debug.Log("transform.rotation.z = " + transform.rotation.z.ToString()); Добавлено через 3 минуты Но, чтобтебя не мурыжить долго, ты пытаешься сравнить привычный для тебя угол с Quaternion. Тк transform.rotation возвращает не тот ротейшн котрый у тебя в инспекторе. тебе надо сравнивать с transform.eulerAngles Добавлено через 1 минуту https://docs.unity3d.com/Scrip... ation.html public Quaternion rotation; https://docs.unity3d.com/Scrip... ngles.html public Vector3 eulerAngles; <-- Добавлено через 2 минуты if (transform.eulerAngles.z > 90f) { rspeed = 0; } Что - то типо такого
1
|
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
||||||
11.09.2016, 12:59 [ТС] | 3 | |||||
0
|
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
|
11.09.2016, 13:29 | 4 |
есть еще
Transform.localRotation Transform.localEulerAngles relative to the parent transform's rotation. Добавлено через 6 минут плавный возврат к значению лучше делать так transform.euler.rotation = Vector3.Lerp(transform.euler.rotation , Vector.Zero, Time.DeltaTime * speed); вместо Vector.Zero твоё исходное положение камеры (тк я не знаю кактам у тебя что) Добавлено через 53 секунды с моего когда тупо копипастить - рабоать не будет, пишу примерно по памяти, придется гуглить как оно пишется правильно Добавлено через 42 секунды https://docs.unity3d.com/Scrip... .Lerp.html Vector3.Lerp Добавлено через 3 минуты Что бы не было каши лучше выносить в отдельные функции мне кажется. И писать в if'ах Debug.log , тогла поймешь что у тебя срабатывает и что не может if (Input.GetKey(KeyCode.PageUp)) { CamMoveDown(); } if (Input.GetKeyUp(KeyCode.PageUp)) { CamReset(); } И учесть 1 раз срабатывает функция или пка жмешь кнопку.GetKeyUp вроди 1 раз отработает и всё, дкбаг покажет оно много раз отрабатывает или нет. В случае если только 1 раз, то надо вешать на короутину, или делать булиан bool= isCamReseted и ждать пок не поменяется значение. Я чесн тут не могу помочь, мало исходных данных. Я Указал возможные ошибки и варианты лечения
1
|
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
||||||
12.09.2016, 18:03 [ТС] | 5 | |||||
В общем, реализовал, однако, относительно плавности возвращения - не могу понять, как делать. Как и то, что нужно сделать, чтобы соблюдалось условие по углу поворота не больше 90 градусов.
0
|
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
|
12.09.2016, 22:42 | 6 |
у меня с углами проблема, решаю всегда заново и забываю.
там после 180 градусов перескакивает на 0 или минус 360 вроди (точно не помню) надо юзать что-то типо такого: if(angle < 180) { angle = Mathf.Clamp(angle, 0, 10); } if(angle > 180) { angle = Mathf.Clamp(angle, 350, 360); } Добавлено через 7 минут выводи в дебаг в каждом кадре вращение, разгребай, что в консоли, а потом условием. ..................................... по возврату к исходному положению. Самый легкий вариант. Создать (пустой) GameObject в сцене, на месте камеры. Скопируй Трансформ ротейшн из камеры в твойю пустышку. в скрипте объяви public Transform CameraDefaultTransform. Потом перетяни пустышку в инспектор, на место объявленной переменной. Теперь у тебя есть как должна стоять камера. в скрипте когда надо делаешь mycamera.transform.Rotation = Quaternion.Lerp(mycamera.transform.Rotation, CameraDefaultTransform.rotation, Time.DeltaTime * speed); или тоже самое, только лерпишь еулер поворот. .. Лерпить с гейм обжектами в сцене удобно, лично мне. Тк можно легко настроить положения камер не трогая код. Пустышки в виде кубиков, видно где позиции камер. Потом отключил у них рендер и всё. Добавлено через 8 минут твой код прочитать не осилил тк сейчас под веществами и работу работаю свою
0
|
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
||||||
14.09.2016, 17:50 [ТС] | 7 | |||||
В общем, вот таким образом написал, но эффекта плавности все равно нет - все мгновенно происходит...
0
|
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
|
14.09.2016, 18:00 | 8 |
CamBack()
где у тебя вызывается? зачем в кам беке входной параметр rotating ? Оно вобще знать ничего не должно. запустилось на взврат, отлерпилось в исходное и всё Добавлено через 1 минуту а, нашел. тут оно вызывается if ((Input.GetKeyUp(KeyCode.PageUp)) && (isReset == false)) { CamBack(rotate); }
1
|
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
|
14.09.2016, 18:05 [ТС] | 9 |
Это как раз сделано, чтобы можно было контролировать скорость возврата (чтобы она была соразмерна скорости поворота). Ну так что может быть неправильно? Так-то, повторюсь, работает, но не так, как надо)
0
|
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
||||||
14.09.2016, 18:39 | 10 | |||||
Сообщение было отмечено endicator как решение
Решение
Вот, Набросал поворот камеры а ограничения и другие движения сам пропишешь.
Это готовый скрипт, создай новый и скопипасть в новый скрипт. Повесь на камеру, настрой скорость.
1
|
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 116
|
|
14.09.2016, 18:56 [ТС] | 11 |
спасибо, буду разбираться, почему я такой нубас, а у тебя получилось =)
0
|
10 / 10 / 5
Регистрация: 06.09.2016
Сообщений: 26
|
|
14.09.2016, 19:10 | 12 |
endicator, Для спасибо есть кнопочка.
Ничего страшного. Рад был помочь. С опытом научишься. Не забывай когда станешь умным помогать нубам)
1
|
14.09.2016, 19:10 | |
14.09.2016, 19:10 | |
Помогаю со студенческими работами здесь
12
Не изменяется переменная Переменная не изменяется Не изменяется static переменная Не изменяется глобальная переменная в методе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |