Size: a a a

2021 February 02

DZ

Dmitriy Zayceff in unity3d.ru
заработало вроде, просто забыл активировать платформу
источник

🎄K

🎄 Viktor 🎄 Korkishko... in unity3d.ru
Подгружать их в реалтайме?
источник

ВС

Влад Солодуха... in unity3d.ru
Друзья, привет. Такой вопрос:
Input.GetAxis(Horizontal) при нажатии кнопок "A" и "D" Возвращает значение от -1(влево) до 1(вправо) - это значение сохраним в переменную z. Тоже самое и с Input.GetAxis("Vertical") - переменная x.
Мне нужно просчитать скорость движения игрока от 0 (стоит) , до 1(бежит на максимальную скорость). Я делаю вот так:
speed = Mathf.Abs(z+x);
Проблемы:
1) Когда я двигаюсь по диагоналям, то значение speed равно 2, так как х = 1 и z = 1. Помогите написать правильную формулу, где 1 - максимальная скорость, 0.5 - половина, а 0 - обьект стоит.
2) Когда я быстро меняю вектор направления на противоположный, к примеру бегу вверх, а потом резко вниз, то значение x плавно меняется от 1 до -1, при этом есть момент, в котором значение x равно 0. Аниматор этого обьекта зависит от значения переменной speed и когда значение speed равно 0, проигрывается анимация idle, чего происходить не должно, так как я просто изменил вектор движения. Подскажите, может кто-то сталкивался, спасибо.
источник

ДМ

Даниил Маркевич... in unity3d.ru
Нормализуй вектор движения
источник

ВВ

Владимир Владимирови... in unity3d.ru
Интересно а зачем Mathf.Abs(a+b)?
источник

ВВ

Владимир Владимирови... in unity3d.ru
Может я что то не понимаю
источник

RK

Ruslan Kalinin in unity3d.ru
потому что с тригонометрией плохо
источник

IM

Ivan Morgun in unity3d.ru
Подскажите по анимации пж. Есть персонаж, все анимации поспрайтовые. Т.е. перс рисуется покадрово. Нужно добавить в игру 4 набора доспехов, соответственно это будут спрайты полностью всех анимаций, но где перс нарисован в разных доспехах. Как удобней всего будет сделать анимации? Т.е. прямо в лоб делать 5 контроллеров с одинаковым функционалом, но разными спрайтами не хочется
источник

ВС

Влад Солодуха... in unity3d.ru
Ruslan Kalinin
потому что с тригонометрией плохо
я не спорю, именно поэтому и попросил помощи в этом вопросе
источник

RK

Ruslan Kalinin in unity3d.ru
https://docs.unity3d.com/ru/2019.4/Manual/LoadingResourcesatRuntime.html

ссылка на русском.
Подгружать можно только ресурсы упакованные в бандлы собранные под конкретные платформы.
для тех же самых "картинок" как вы их называете строятся мип мапсы и переводятся в формат платформы
возможно есть решение, которое генерирует бандлы из иходников "на лету" но не встречал
источник

ВС

Влад Солодуха... in unity3d.ru
Даниил Маркевич
Нормализуй вектор движения
GetAxis возвращает float, это значение нужно нормализировать?
источник

d

dm in unity3d.ru
источник

ВС

Влад Солодуха... in unity3d.ru
Ruslan Kalinin
потому что с тригонометрией плохо
не подскажешь, как решить проблему?
источник

RK

Ruslan Kalinin in unity3d.ru
speed = new Vector2(x,z).magnitude если 2 мерный
или vector3 если 3хмерный.
при любом раскладе если у тебя вперед и вправо по единице, скорость будет корень из 2х.
если надо привести к скорости то
V = new Vector2(x/Mathf.sqrt(2),z/Mathf.sqrt(2))*speedValue;
источник

ВС

Влад Солодуха... in unity3d.ru
Ruslan Kalinin
speed = new Vector2(x,z).magnitude если 2 мерный
или vector3 если 3хмерный.
при любом раскладе если у тебя вперед и вправо по единице, скорость будет корень из 2х.
если надо привести к скорости то
V = new Vector2(x/Mathf.sqrt(2),z/Mathf.sqrt(2))*speedValue;
спасибо
источник

RK

Ruslan Kalinin in unity3d.ru
только при таком подходе макс скорость при движении в только вперёд будет 1/sqrt(2) - издержки системы координат.
Можно пойти через нормализацию
V = new Vector2(x,z).normalized*sqrt(x*x+z*z)/sqrt(2)
источник

RK

Ruslan Kalinin in unity3d.ru
вроде нигде не ошибся
источник

ВС

Влад Солодуха... in unity3d.ru
Ruslan Kalinin
только при таком подходе макс скорость при движении в только вперёд будет 1/sqrt(2) - издержки системы координат.
Можно пойти через нормализацию
V = new Vector2(x,z).normalized*sqrt(x*x+z*z)/sqrt(2)
V - float типа?
источник

RK

Ruslan Kalinin in unity3d.ru
ну как может быть флоат, если он вектор принимает
источник

ВС

Влад Солодуха... in unity3d.ru
Ruslan Kalinin
ну как может быть флоат, если он вектор принимает
speed(V в твоем случае) должен быть float типа, где 0 - обьект не передвигается, а > 0 - обьект движется. 1 - макс скорость
источник