Войти
Unreal EngineФорумBlueprints

Перемещение заспавленных объектов

#0
22:34, 8 дек. 2019

Доброго времени суток! Как перемещать объекты созданные функцией Spawn Actor from Class?
Я хотел динамически создавать спрайты облака, передвигать их и уничтожать через некоторое расстояние. Создавать вроде их получилось, но он и не двигаються =(


#1
(Правка: 22:40) 22:40, 8 дек. 2019

А можно код перемещения увидеть или бп?

#2
22:42, 8 дек. 2019

SetActorLocation очевидно. Если они movable. Если не movable то редактор ругнется ошибкой после окончания игры.

#3
22:44, 8 дек. 2019

В Return Value ноды - ссылка на созданный объект. Также их можно увидеть в окне World Outliner справа. А после создания уже можно распоряжаться ими по своему усмотрению - задавать движение или уничтожать.

#4
22:55, 8 дек. 2019

@!!ex
Спасибо большое! Помогло)
Salamandr
Я бп делаю и пока что кривовастенько все, как доделаю могу выложить скрин сюда)
yolkfolk
спасибо)

#5
0:37, 9 дек. 2019

Появилась проблема, она заключается в том, что когда появляется второе облачко, первое облачко останавливается, а как сделать что бы летело =(

+ Показать

#6
(Правка: 6:31) 6:31, 9 дек. 2019

После долгой ночи, пришел к выводу, что перемещение облачков лучше перенести в класс который спавню скажем так, но все равно интересно, есть ли возможность отсюда управлять плавно положением созданных (нескольких) объектов)

#7
7:32, 9 дек. 2019

Чтобы взаимодействовать с несколькими actor надо внести их в array. Дальше подцепляешь for each loop и выполняешь для каждого нужные задачи. По окончании процесса надо не забыть исполнить ноду remove. Вообще, это базовый функционал работы с переменными (variables). Ты сэкономишь себе много нервов, если подробно изучишь эту часть документации по движку.

#8
(Правка: 9:24) 8:36, 9 дек. 2019

Bodrin
Разбираюсь вот)

Появилась правда одна странность, для рандомизирования значения, например скорости полета облачка и его размера использую Random Float in Range (для каждой операции своя функция) и получается стабильно когда большое облачко, оно быстрее летит, а когда маленькое медленнее. Есть ли по лучше способ рандомизировать это дело?)

#9
10:36, 9 дек. 2019

pr13vodoley
> когда большое облачко, оно быстрее летит, а когда маленькое медленнее.

Это к Random Float in Range никакого отношения не имеет. Выводи каждый раз через Print String сгенерированное значение и увидишь, что каждый раз оно разное вне зависимости от того, где ты его применяешь.

#10
(Правка: 15:26) 15:18, 9 дек. 2019

yolkfolk
Спасибо большое, хороший способ отладки) Проверил, цифры хорошие получаются, видимо дело в MoveComponentTo. Чтобы сделать рандомную скорость для облачков я вношу рандомное значение в OverTime этой функции. Возможно из за этого. Правда перед этой функцией выполняется SetActorScale3D, но по идее она не должна влиять

#11
(Правка: 16:24) 16:18, 10 дек. 2019

pr13vodoley
> Появилась проблема, она заключается в том, что когда появляется второе облачко,
> первое облачко останавливается, а как сделать что бы летело =(
как ты сделал так оно и работает ...

pr13vodoley
> лучше перенести в класс который спавню
Вот из дефолтного примера перемещение павна

https://blueprintue.com/blueprint/-ubwpkt7/

Выглядит проще чем твое

#12
(Правка: 16:23) 16:22, 10 дек. 2019

pr13vodoley
> есть ли возможность отсюда управлять плавно положением созданных (нескольких)
> объектов)
Это уже вопрос твоей архитектуры и понимания как движок работает
Можно делать cast  к твоему облаку из управляющего им эктора и крутить переменные или вызывать что-нибудь
Например значение скорости прибавлять/убавлять а класс облака сам будет делать перемещение себя если есть это значение.

Когда ты их спавнишь забивать их сразу в массив и потом оттуда брать

p.s. может лучше unity возьмешь ?
Unreal EngineФорумBlueprints