Unity3D 5 — Скорость, направление, физика?

У персонажа имеет 2д физики. У персонажа имеется компонент скрипта. Все работает, кроме одного участка.

void FixedUpdate()
    {
        if (velocity.y > 0.1)
        {
            Debug.Log("Up Jump");
            this.GetComponent<SpriteRenderer>().sprite = this.upJump;
        }
        else if (velocity.y < 0.1)
        {
            Debug.Log("Down Jump");
            this.GetComponent<SpriteRenderer>().sprite = this.downJump;
        }
        else if (velocity.y == 0.0)
        {
            Debug.Log("NOT Jump");
        }
    }


То есть, персонаж прыгает, меняются спрайты, но когда он стоит на месте и в инспекторе velocity.y = 0, в консоль не выводит сообщения "NOT Jump". Почему?
  • Вопрос задан
  • 527 просмотров
Решения вопроса 3
lasalas
@lasalas
.NET Architect
Правило: никогда не сравнивай вещественные числа на равенство (м.б. ошибки представления, округления и т.п.)
...
else if ( Math.Abs(velocity.y) <= 0.1 )
{
       Debug.Log("NOT Jump");
}

Еще: константу лучше вынести
Ответ написан
Комментировать
Scorpi
@Scorpi
Может быть у вас velocity.y никогда не равен 0?
Ну или недостаточная точность, он может быть равен 0.0000000321
Ответ написан
@Maddox Автор вопроса
Моя ошибка. Второе условие должно быть velocity.y < -0.1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы