Разные значения для параметров Axis"Mouse Y" (Z)
| |
35363 | Дата: Пятница, 04 Мая 2018, 15:48 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Мне необходимо задать разные значения для параметров Axis"Mouse Y" (Z). что то на подобие
if (Input.GetKey("q")) { float v = 15 * Time.deltaTime; rb.AddTorque(new Vector3(0, 0, v)); } if (Input.GetKey("e")) { float v = -30 * Time.deltaTime; rb.AddTorque(new Vector3(0, 0, v)); } значения поворотов для каждой оси должны быть разными(Y+,Y-,Z+,Z-), а не едиными как во множествах примерах
строка из справки float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y"); transform.Rotate(v, h, 0);
ЗЫ заметил баг, если развернуть камеру на 180 вверх или вниз, то Q,E отрабатывают в обратном порядке, хотелось бы узнать как и это полечить.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Пятница, 04 Мая 2018, 15:49 |
|
| |
drcrack | Дата: Пятница, 04 Мая 2018, 15:56 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Я вот вообще не понял о чем ты. Чем тебя не устраивает пример из справки?
Цитата ЗЫ заметил баг, если развернуть камеру на 180 вверх или вниз, то Q,E отрабатывают в обратном порядке, хотелось бы узнать как и это полечить. Не поворачивать камеру на 180 градусов
|
|
| |
Navarh | Дата: Пятница, 04 Мая 2018, 21:52 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата 35363 ( ) хотелось бы узнать как и это полечить Попробуй сделать проверку. Если текущий угол поворота камеры меньше 0, то менять знак(15 на -15, -30 на 30).
В Юнити не работаю, но если тут такая же система, как в Анриале, то должно помочь. Там поворот идет от 0 до 180, а потом от -0 до -180.
Сообщение отредактировал Navarh - Пятница, 04 Мая 2018, 23:24 |
|
| |
35363 | Дата: Суббота, 05 Мая 2018, 04:37 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Цитата Navarh ( ) Попробуй сделать проверку. Если текущий угол поворота камеры меньше 0, то менять знак(15 на -15, -30 на 30). Идея хорошая, отработать должно, но как костыль. А вот как разделить Z Y на z, -z. y, -y я хз
ЗЫ Navarh, Вы dedicated server на анриле делали? То мы из за нехватки информации на юньку и пересели, эпики не шибко любят делится подобного рода инфой.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Суббота, 05 Мая 2018, 04:50 |
|
| |
Navarh | Дата: Суббота, 05 Мая 2018, 11:49 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Цитата 35363 ( ) dedicated server на анриле делали? Нет
|
|
| |
drcrack | Дата: Суббота, 05 Мая 2018, 13:30 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Цитата А вот как разделить Z Y на z, -z. y, -y я хз Я очень сомневаюсь что есть хотя бы 1 человек на форуме, который понял, что именно ты хочешь сделать
|
|
| |
35363 | Дата: Суббота, 05 Мая 2018, 15:53 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) Я очень сомневаюсь что есть хотя бы 1 человек на форуме, который понял, что именно ты хочешь сделать Что тут не понятного? я же не на техническом вам тут излагаю. Нужно что бы когда крутиш камеру вниз была к примеру скорость 5, когда вверх была скорость 10, та же ситуация с влево/вправо. На импатах это легко прописать а вот с мышью
if (Input.GetKey("w")) { forceValue = объект.вперед * сумма движения; } if (Input.GetKey("s")) { forceValue = - объект.вперед * сумма движения; }
А теперь нужно то же самое только с использованием инпата миши - Input.GetAxis("Mouse X") потому что если прописать if (Input.GetAxis("Mouse X")) { forceValue = объект.вперед * сумма движения; } if (Input.GetAxis("Mouse X")) { forceValue = - объект.вперед * сумма движения; } Юнька не проглотит код так как Input.GetAxis("Mouse X") принимает общую сумму up dawn с ОДНИМ значением. А мне надо что то подобное на осях миши negative/positive button. В общем я хз как Вам господа еще пояснить.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Суббота, 05 Мая 2018, 15:53 |
|
| |
drcrack | Дата: Суббота, 05 Мая 2018, 16:29 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Цитата Нужно что бы когда крутиш камеру вниз была к примеру скорость 5, когда вверх была скорость 10 а че сразу нельзя было написать так?)
Код float v = verticalSpeed * Input.GetAxis("Mouse Y"); ^ оригинал "из справки"
Код var mouseY = Input.GetAxis("Mouse Y"); var speed = (mouseY > 0) ? 10 : 5; var v = speed * mouseY; ^ разная скорость в зависимости от знака
PS
Цитата В общем я хз как Вам господа еще пояснить. так сказанул как будто мы все тут тупые, один ты умный был бы умный, не было бы этой темы, и даже если была бы, в ней не было бы бреда вроде "Input.GetAxis("Mouse X") принимает общую сумму up dawn с ОДНИМ значением."
Сообщение отредактировал drcrack - Суббота, 05 Мая 2018, 16:35 |
|
| |
35363 | Дата: Суббота, 05 Мая 2018, 19:25 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) ^ оригинал "из справки" Уважаемый, тебя кто то обвинил в тупости? Что за оффтоп? Лучше ткни мне линком в справку, то я не нашел, куда это тулить у себя. void FixedUpdate() { UpdateCursorPosition();
//DZ - мертвая зона pitch = Mathf.Clamp(distFromVertical, -screen_clamp - DZ, screen_clamp + DZ) * pitchYaw_strength; yaw = Mathf.Clamp(distFromHorizontal, -screen_clamp - DZ, screen_clamp + DZ) * pitchYaw_strength;
float x_axis = Input.GetAxis("Mouse X"); float y_axis = Input.GetAxis("Mouse Y"); pointerPosition += new Vector2(x_axis * mouse_sensitivity_modifier, y_axis * mouse_sensitivity_modifier); // 17 = turnspeed rb.AddRelativeTorque((pitch * 17 * Time.deltaTime),(yaw * 17 * Time.deltaTime),(roll * 17 * Time.deltaTime));
} Если я сделаю так, float x_axis = Input.GetAxis("Mouse X"); var speedX = (x_axis > 0) ? 10 : 5; var mx = speedX * x_axis; float y_axis = Input.GetAxis("Mouse Y"); var speedY = (y_axis > 0) ? 10 : 15; var my = speedX * y_axis; pointerPosition += new Vector2(x_axis * mouse_sensitivity_modifier, y_axis * mouse_sensitivity_modifier); // 17 = turnspeed rb.AddRelativeTorque((pitch * mx * Time.deltaTime),(yaw * my * Time.deltaTime),(roll * 17 * Time.deltaTime));
То поворот отрабатывает не корректно. Скрипт реализую для управления самолетом что бы во время повреждений менялось управление.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
|
|
| |
drcrack | Дата: Воскресенье, 06 Мая 2018, 15:03 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| Цитата То поворот отрабатывает не корректно. конкретней
|
|
| |
|