Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Считывание уменьшение координаты Y в Unity 2D

Денис Чижиков Ученик (215), закрыт 9 месяцев назад
Здравствуйте, пишу свою первую игру. Не могу разобраться как можно считывать падение персонажа. Мне нужно чтобы это был bool, который сможет вывести в последующем действии return OnDrop; Нужно что-то типа:
Vector3 drop = Vector3.down;
transform.position = Vector3.down;
if (drop.y < 0)
{
OnDrop = true;
}
и в дальнейшем в Update();
if(OnDrop==true)
{
charAnimator.SetInteger("State", 3);
}

Но это анимация не проигрывается. Прошу о помощи.
Схема такая. Если координата "Y" у персонажа уменьшается - то срабатывает анимация.
Дополнен 3 года назад
Ошибка, анимация работает, но персонаж зависает в воздухе.
Дополнен 3 года назад
Пофиксил этой, но теперь анимация просто зависает навесегда.
Что у меня получилось:
bool drop()
{
Vector3 drop = Vector3.down;
if (drop.y < 0)
{
OnDrop = true;
}
else
{
OnDrop = false;
}
return OnDrop;
}

Может что-то посоветуете?
Лучший ответ
Xttx Мыслитель (8303) 3 года назад
Потому что Vector3.down - это как бы константа, всегда равна 0,-1,0 и не зависит ни от перемещения ни от чего вообще. Вот -transform.up - будет возвращать текущий вектор падения - но нормализованный, т. е. только напрвление, никак не скорость.

Если на объекте есть RigidBody, то скорость падения можно узнать через rb.velocity.y. Если нет - тогда сложнее, надо в каждом апдейте запоминать текущее положение и сравнивать с предыдущим... но я думаю у тебя там есть rb, иначе он бы у тебя не падал в принципе.
Денис ЧижиковУченик (215) 3 года назад
Спасибо
Остальные ответы
Похожие вопросы