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

Как сделать так, чтобы статичный объект двигался по оси Y до тех пор, пока не соприкоснётся с таким же объектом? UE5

JooreSss Знаток (272), на голосовании 2 месяца назад
Всем привет, я только начал разработку в UE5. У меня есть вопрос: Как сделать так, чтобы статичный объект двигался по оси Y (либо же X или Z) до тех пор, пока не соприкоснётся с таким же объектом?. А если конкретнее, то у меня стоят две стенки (static mesh, боксы). Мне нужно сделать так, чтобы каждые 5 минут одна из этих стенок двигалась к противоположной, но останавливалась, соприкоснувшись с ней. А через 5 минут двигалась обратно на свою позицию.На скриншоте как раз эти две стенки. Ещё раз постараюсь объяснить: одна из стенок (допустим та, что выбрана) должна двигаться ко второй, но не в неё, т.е. по итогу соприкоснуться и остановиться. Я бы мог просто менять её координаты по таймеру, но во-первых, я не очень понял как пользоваться таймером, а во-вторых, мне нужно плавное движение, которое закончится при соприкосновении.

Очень много воды, заранее извините, просто очень тяжело объяснить, хотя вещь простая
Голосование за лучший ответ
Xttx Мыслитель (9169) 3 месяца назад
  • Добавляешь булеву переменную can_move, default = true
  • В тике, если переменная can_move == true, меняешь координаты объекта. Не по таймеру. В тике. Там есть, конечно, нода MoveTo, которая сама бы её передвигала, но тогда ты её хрен остановишь.
  • По эвенту OnHit (или OnOverlap, в зависимости от настроек коллизии) отлавливаешь событие соприкосновение и выставляешь can_move в false
  • Дальше без таймера никак. Ну, то есть можно, но глупо. Просто используешь одну из нод SetTimerByEvent / SetTimerByFunctionName, они запустят эвент или функцию через заданное время. В этом эвенте/функции просто ставишь переменную обратно в true.
Похожие вопросы