плавное воспроизведение анимации камеры
baha Дата: Ср, 25 Июн 2014, 23:16 | Сообщение # 1
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
Здраствуйте, вот скрипт : Код
float curXRot = gameObject.transform.rotation.x; float curYRot =gameObject.transform.rotation.y; if(Input.GetKeyUp(KeyKode.W)) { animation.Stop(walk.name); if(curXRot > 0) { ..... } if(curXRot < 0) { .... } и т.д по y }
Проблема в том что если отпустить клавишу ходьбы то анимация ходьбы останавливается только после полного воспроизведения. Смысл скрипта таков - если мы отпустили клавишу то анимация (walk) останавливается и проводится проверка на координаты ротации по x (curXRot) и y (curYRot) , и если текущие координаты не равны исходным то значение координат плавно изменяется в зависимости от того больше или меньше текущие координаты относительно исходных координат. Собственно вопрос - что нужно написать вместо многоточий для плавного изменения числа?
Сообщение Здраствуйте, вот скрипт : Код
float curXRot = gameObject.transform.rotation.x; float curYRot =gameObject.transform.rotation.y; if(Input.GetKeyUp(KeyKode.W)) { animation.Stop(walk.name); if(curXRot > 0) { ..... } if(curXRot < 0) { .... } и т.д по y }
Проблема в том что если отпустить клавишу ходьбы то анимация ходьбы останавливается только после полного воспроизведения. Смысл скрипта таков - если мы отпустили клавишу то анимация (walk) останавливается и проводится проверка на координаты ротации по x (curXRot) и y (curYRot) , и если текущие координаты не равны исходным то значение координат плавно изменяется в зависимости от того больше или меньше текущие координаты относительно исходных координат. Собственно вопрос - что нужно написать вместо многоточий для плавного изменения числа? Автор - baha Дата добавления - 25 Июн 2014 в 23:16
Altair Дата: Чт, 26 Июн 2014, 00:30 | Сообщение # 2
Unity 3D PRO Developer
Сообщений: 758
Награды:
6
Репутация:
195
Статус: Offline
Mathf.Lerp
baha Дата: Чт, 26 Июн 2014, 10:47 | Сообщение # 3
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
Мне этот mathf сразу не монравился, может вы дадите мне направление? Напишите один пример, по моему скрипту.Добавлено (26 Июн 2014, 10:47) --------------------------------------------- *понравился
Сообщение Мне этот mathf сразу не монравился, может вы дадите мне направление? Напишите один пример, по моему скрипту.Добавлено (26 Июн 2014, 10:47) --------------------------------------------- *понравился
Автор - baha Дата добавления - 26 Июн 2014 в 10:47
NapalmRain Дата: Чт, 26 Июн 2014, 11:03 | Сообщение # 4
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
Цитата baha (
)
Напишите один пример, по моему скрипту.
Сообщение выше - это ссылка...
Сообщение Цитата baha (
)
Напишите один пример, по моему скрипту.
Сообщение выше - это ссылка...Автор - NapalmRain Дата добавления - 26 Июн 2014 в 11:03
baha Дата: Чт, 26 Июн 2014, 13:13 | Сообщение # 5
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
NapalmRain , спасибо за информацию, без вас бы и не догодался. Mathf.Lerp изменяет число с текущего значения до требуемого за одну секунду , мне нужна плавность.
Сообщение NapalmRain , спасибо за информацию, без вас бы и не догодался. Mathf.Lerp изменяет число с текущего значения до требуемого за одну секунду , мне нужна плавность.Автор - baha Дата добавления - 26 Июн 2014 в 13:13
NapalmRain Дата: Чт, 26 Июн 2014, 13:39 | Сообщение # 6
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
Цитата baha (
)
Mathf.Lerp изменяет число с текущего значения до требуемого за одну секунду , мне нужна плавность.
Я думаю вы просто не правильно поняли принцип работы Лерпа как такового. Погуглите по этому значению и найдёте много примеров. А ещё лучше поэксперементируйте с параметрами функции и посмотрите, что получится. Есть ведь не только арифметический лерп (список лерпов ) Вас по большей части из них интересуют Vector3 и Quaternion. Но лучше почитайте об этом понятии в принципе.
Сообщение Цитата baha (
)
Mathf.Lerp изменяет число с текущего значения до требуемого за одну секунду , мне нужна плавность.
Я думаю вы просто не правильно поняли принцип работы Лерпа как такового. Погуглите по этому значению и найдёте много примеров. А ещё лучше поэксперементируйте с параметрами функции и посмотрите, что получится. Есть ведь не только арифметический лерп (список лерпов ) Вас по большей части из них интересуют Vector3 и Quaternion. Но лучше почитайте об этом понятии в принципе.Автор - NapalmRain Дата добавления - 26 Июн 2014 в 13:39
Altair Дата: Чт, 26 Июн 2014, 13:43 | Сообщение # 7
Unity 3D PRO Developer
Сообщений: 758
Награды:
6
Репутация:
195
Статус: Offline
baha , тебе нужно думать..а не плавность.. А знаешь почему ?Да потому что там написано Код
static function Lerp(from: float, to: float, t: float): float;
что значит 1 значение float,второе и третие тоже,А это значит что там где вставляется Time.time(секунда) как в примере можно вставить спокойно и Time.deltaTime(плавность) к примеру (Time.deltaTime*5) и буде тебе счастье..эх..
Сообщение baha , тебе нужно думать..а не плавность.. А знаешь почему ?Да потому что там написано Код
static function Lerp(from: float, to: float, t: float): float;
что значит 1 значение float,второе и третие тоже,А это значит что там где вставляется Time.time(секунда) как в примере можно вставить спокойно и Time.deltaTime(плавность) к примеру (Time.deltaTime*5) и буде тебе счастье..эх..Автор - Altair Дата добавления - 26 Июн 2014 в 13:43
baha Дата: Чт, 26 Июн 2014, 17:04 | Сообщение # 8
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
Не получается, либо я криворук, либо....
Сообщение Не получается, либо я криворук, либо.... Автор - baha Дата добавления - 26 Июн 2014 в 17:04
Altair Дата: Чт, 26 Июн 2014, 23:34 | Сообщение # 9
Unity 3D PRO Developer
Сообщений: 758
Награды:
6
Репутация:
195
Статус: Offline
baha , либо криворук..а криворукость от непонимания как оно работает)
Сообщение baha , либо криворук..а криворукость от непонимания как оно работает)Автор - Altair Дата добавления - 26 Июн 2014 в 23:34
baha Дата: Пт, 27 Июн 2014, 08:22 | Сообщение # 10
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
Ну я вас умаляю объясните мне как это работает!!!Добавлено (27 Июн 2014, 08:22) --------------------------------------------- Altair, я сделал как вы говорите, бред получился.
Сообщение Ну я вас умаляю объясните мне как это работает!!!Добавлено (27 Июн 2014, 08:22) --------------------------------------------- Altair, я сделал как вы говорите, бред получился.
Автор - baha Дата добавления - 27 Июн 2014 в 08:22
NapalmRain Дата: Пт, 27 Июн 2014, 08:59 | Сообщение # 11
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
Цитата baha (
)
Ну я вас умаляю объясните мне как это работает!!! Altair, я сделал как вы говорите, бред получился.
Покажите ваш код. На его примере покажу что и где не так.
Сообщение Цитата baha (
)
Ну я вас умаляю объясните мне как это работает!!! Altair, я сделал как вы говорите, бред получился.
Покажите ваш код. На его примере покажу что и где не так.Автор - NapalmRain Дата добавления - 27 Июн 2014 в 08:59
Thedrhax14 Дата: Пт, 27 Июн 2014, 09:19 | Сообщение # 12
Сообщений: 54
Награды:
0
Репутация:
1
Статус: Offline
Эээм Я не легче воспользоваться animator-ом
Виду блог про разроботку игр и про свои проекты https://thedrhax14.wordpress.com/
Сообщение отредактировал Thedrhax14 - Пт, 27 Июн 2014, 09:19
Сообщение Эээм Я не легче воспользоваться animator-ом Автор - Thedrhax14 Дата добавления - 27 Июн 2014 в 09:19
baha Дата: Пт, 27 Июн 2014, 09:53 | Сообщение # 13
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
NapalmRain, читайте первое сообщение.
Сообщение NapalmRain, читайте первое сообщение. Автор - baha Дата добавления - 27 Июн 2014 в 09:53
NapalmRain Дата: Пт, 27 Июн 2014, 11:02 | Сообщение # 14
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
Цитата baha (
)
NapalmRain, читайте первое сообщение.
конечный вариант кода приведите, без многоточий...
Сообщение Цитата baha (
)
NapalmRain, читайте первое сообщение.
конечный вариант кода приведите, без многоточий...Автор - NapalmRain Дата добавления - 27 Июн 2014 в 11:02
baha Дата: Вт, 08 Июл 2014, 14:13 | Сообщение # 15
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
Код
using UnityEngine; using System.Collections; public class CameraAnimations : MonoBehaviour { public CharacterController playerChC; float CameraCurrentAngleX; float CameraCurrentAngleY; float CameraCurrentAngleZ; public AnimationClip Walking; public AnimationClip Running; void Update() { float ReturnTime = 10f; CameraCurrentAngleX = transform.localEulerAngles.x; CameraCurrentAngleY = transform.localEulerAngles.y; CameraCurrentAngleZ = transform.localEulerAngles.z; float RetutnCamPosX = Mathf.Lerp(CameraCurrentAngleX , 0f, ReturnTime ); float RetutnCamPosY = Mathf.Lerp(CameraCurrentAngleY , 0f, ReturnTime ); if (playerChC.isGrounded == true) { if (Input.GetKey(KeyCode.W) | Input.GetKey(KeyCode.A) | Input.GetKey(KeyCode.S) | Input.GetKey(KeyCode.D)) { animation.CrossFade(Walking.name); } if (Input.GetKey(KeyCode.W) & Input.GetKey(KeyCode.LeftShift)) { animation.Stop(Walking.name); animation.CrossFade(Running.name); } } if (Input.GetKeyUp(KeyCode.W) | Input.GetKeyUp(KeyCode.A) | Input.GetKeyUp(KeyCode.S) | Input.GetKeyUp(KeyCode.D)) { animation.Stop(Walking.name); if (CameraCurrentAngleX > 0 | CameraCurrentAngleY > 0 | CameraCurrentAngleX < 0 | CameraCurrentAngleY < 0) { transform.localEulerAngles = new Vector3(RetutnCamPosX, RetutnCamPosY, 0); } } } }
Сообщение отредактировал baha - Вт, 08 Июл 2014, 14:15
Сообщение Код
using UnityEngine; using System.Collections; public class CameraAnimations : MonoBehaviour { public CharacterController playerChC; float CameraCurrentAngleX; float CameraCurrentAngleY; float CameraCurrentAngleZ; public AnimationClip Walking; public AnimationClip Running; void Update() { float ReturnTime = 10f; CameraCurrentAngleX = transform.localEulerAngles.x; CameraCurrentAngleY = transform.localEulerAngles.y; CameraCurrentAngleZ = transform.localEulerAngles.z; float RetutnCamPosX = Mathf.Lerp(CameraCurrentAngleX , 0f, ReturnTime ); float RetutnCamPosY = Mathf.Lerp(CameraCurrentAngleY , 0f, ReturnTime ); if (playerChC.isGrounded == true) { if (Input.GetKey(KeyCode.W) | Input.GetKey(KeyCode.A) | Input.GetKey(KeyCode.S) | Input.GetKey(KeyCode.D)) { animation.CrossFade(Walking.name); } if (Input.GetKey(KeyCode.W) & Input.GetKey(KeyCode.LeftShift)) { animation.Stop(Walking.name); animation.CrossFade(Running.name); } } if (Input.GetKeyUp(KeyCode.W) | Input.GetKeyUp(KeyCode.A) | Input.GetKeyUp(KeyCode.S) | Input.GetKeyUp(KeyCode.D)) { animation.Stop(Walking.name); if (CameraCurrentAngleX > 0 | CameraCurrentAngleY > 0 | CameraCurrentAngleX < 0 | CameraCurrentAngleY < 0) { transform.localEulerAngles = new Vector3(RetutnCamPosX, RetutnCamPosY, 0); } } } }
Автор - baha Дата добавления - 08 Июл 2014 в 14:13
commandoby Дата: Вт, 08 Июл 2014, 14:39 | Сообщение # 16
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
baha , точно не понял чего ты хочешь, но вот попробуй. Код
if(curXRot > 0) { curXRot -= curXRot*Time.deltaTime; } if(curXRot < 0) { curXRot += curXRot*Time.deltaTime; } if(curYRot > 0) { curYRot -= curYRot*Time.deltaTime; } if(curYRot < 0) { curYRot += curYRot*Time.deltaTime; } }
Можешь поэкспериментировать со временем добавив ещё одну переменную Код
var time1 : float = 5; ..... curXRot -= curXRot*Time.deltaTime/time1;
или сделать не утухающую, а плавную Код
curXRot -= Time.deltaTime/time1;
Блог.
Сообщение baha , точно не понял чего ты хочешь, но вот попробуй. Код
if(curXRot > 0) { curXRot -= curXRot*Time.deltaTime; } if(curXRot < 0) { curXRot += curXRot*Time.deltaTime; } if(curYRot > 0) { curYRot -= curYRot*Time.deltaTime; } if(curYRot < 0) { curYRot += curYRot*Time.deltaTime; } }
Можешь поэкспериментировать со временем добавив ещё одну переменную Код
var time1 : float = 5; ..... curXRot -= curXRot*Time.deltaTime/time1;
или сделать не утухающую, а плавную Код
curXRot -= Time.deltaTime/time1;
Автор - commandoby Дата добавления - 08 Июл 2014 в 14:39
baha Дата: Вт, 08 Июл 2014, 15:42 | Сообщение # 17
Сообщений: 37
Награды:
0
Репутация:
1
Статус: Offline
я немного улучшил скрипт, и с mathf подружился, но какое бы я не ставил значение ReturnTime камера все равно резко перемещается, хотелось бы медленее. В чем проблема? Time.deltaTime не помогает.Добавлено (08 Июл 2014, 15:42) ---------------------------------------------commandoby , а что дает деление Time.deltaTime на число
Сообщение я немного улучшил скрипт, и с mathf подружился, но какое бы я не ставил значение ReturnTime камера все равно резко перемещается, хотелось бы медленее. В чем проблема? Time.deltaTime не помогает.Добавлено (08 Июл 2014, 15:42) ---------------------------------------------commandoby , а что дает деление Time.deltaTime на число
Автор - baha Дата добавления - 08 Июл 2014 в 15:42
Левша Дата: Вт, 08 Июл 2014, 16:36 | Сообщение # 18
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
А что может произойти с числом float если это число поделить ? Правильно - оно поделится... А при умножении - умножится.
X.cor.R (Prologue)
Сообщение А что может произойти с числом float если это число поделить ? Правильно - оно поделится... А при умножении - умножится. Автор - Левша Дата добавления - 08 Июл 2014 в 16:36
commandoby Дата: Вт, 08 Июл 2014, 16:58 | Сообщение # 19
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
Цитата baha (
)
commandoby, а что дает деление Time.deltaTime на число
Как уже сказал Левша, Time.deltaTime - возвращает число float время последнего кадра в секундах. А это пробовал? Цитата commandoby (
)
или сделать не утухающую, а плавную Код curXRot -= Time.deltaTime/time1;
Блог.
Сообщение Цитата baha (
)
commandoby, а что дает деление Time.deltaTime на число
Как уже сказал Левша, Time.deltaTime - возвращает число float время последнего кадра в секундах. А это пробовал? Цитата commandoby (
)
или сделать не утухающую, а плавную Код curXRot -= Time.deltaTime/time1;
Автор - commandoby Дата добавления - 08 Июл 2014 в 16:58
Altair Дата: Вт, 08 Июл 2014, 21:03 | Сообщение # 20
Unity 3D PRO Developer
Сообщений: 758
Награды:
6
Репутация:
195
Статус: Offline
В обще ,на мой взгляд ,этот парень бредом мается..
Сообщение В обще ,на мой взгляд ,этот парень бредом мается.. Автор - Altair Дата добавления - 08 Июл 2014 в 21:03