Четверг, 25 Апреля 2024, 10:32

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Небольшой баг
Небольшой баг
Car3manДата: Вторник, 12 Июля 2016, 04:55 | Сообщение # 1
был не раз
Сейчас нет на сайте
При использование такого вида контроллера click , когда идешь только по одной оси ( допустим прямо или влево или право и так далее) то дельта позиции контролера примерно равна ~0.6 юнитов, а если по двум, допустим ( сразу и вправо и прямо ) то ~0.85, как пофиксить этот баг?
LertmindДата: Вторник, 12 Июля 2016, 06:56 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Твой код неполный: неясно какой диапазон значений возвращает GameManager.Instance.GetAxisMove().
Если он возвращает для axis.x строго 0f или 6f и для axis.y строго 0f или 6f, то после moveDirection = new Vector3(axis.x, 0, axis.y); добавляешь строку:
Код
moveDirection = moveDirection.normalized * 6.0f;
Тогда вектор направления всегда будет либо нулевой, либо с длиной 6.0f. Вместо 6.0f надо написать скорость, которая тебе нужна, но так как в коде, опять же, непонятно где используется walkSpeed и runSpeed, корректные исправления, учитывающие бег, предоставить не могу.
Если у тебя будут использоваться промежуточные значения для скорости (типа ускорения), то нужно проверять, что оба значения axis.x и axis.y не равны нулю (значит движение по двум координатам) и в этом случае умножать вектор движения на отношение длины желаемой скорости (6f) к длине new Vector3(6f, 0, 6f) (~ 8.49).

Кстати, ты не написал, получилось ли у тебя в этой теме http://gcup.ru/forum/59-79866-1.


Сообщение отредактировал Lertmind - Вторник, 12 Июля 2016, 06:58
Car3manДата: Вторник, 12 Июля 2016, 07:20 | Сообщение # 3
был не раз
Сейчас нет на сайте
Lertmind, Значения от 0 до 1
А на счет маски впринципе сама маска безупречно работает, благодарю кстати за наводку на этот ассет, но мне не подошел этот метод, так как мне элемент Image нужно вращать, вот видео

P.S. На видео не сильно видно, но в оригинале очень четко видно пиксели


Сообщение отредактировал Car3man - Вторник, 12 Июля 2016, 07:30
LertmindДата: Вторник, 12 Июля 2016, 23:01 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Car3man, если значение от 0 до 1, то можно второй способ из моего ответа вставить после moveDirection = new Vector3(axis.x, 0, axis.y);:
Код
if (axis.x != 0f && axis.y != 0f)
{
    moveDirection = moveDirection * 0.707107; // 1/2^0.5 ~ 0.707107
}

Код не проверял. Лучше вещественные числа сравнивать с помощью Mathf.Approximately.

Похоже в UI-Extensions не предполагалось, что будет вращение маски или ты неправильно используешь.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Небольшой баг
  • Страница 1 из 1
  • 1
Поиск:

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