Пятница, 19 Апреля 2024, 11:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Разные значения для параметров Axis"Mouse Y" (Z) (С#. Axis"Mouse Y" (Z))
Разные значения для параметров 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
старожил
Сейчас нет на сайте
Цитата
То поворот отрабатывает не корректно.

конкретней
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Разные значения для параметров Axis"Mouse Y" (Z) (С#. Axis"Mouse Y" (Z))
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг