Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 46
Здравствуйте. Подскажите пожалуйста, как сделать чтобы actor bluprient (пуля) игнорировал столкновения с pawn (создавший его объект). Вариант с созданием пули на расстоянии от pawn не подойдёт, так как во время игры дистанция между орудием и границами персонажа будет постоянно меняться и получить текущее значение будет невозможно. То есть нужно, чтобы пуля при движении игнорировала коллизию создавшего её персонажа, а персонаж игнорировал коллизию созданной им пули. В настройках коллизии игнорирование конкретного pawn я не нашёл.
Аватара пользователя
Пользователь
Сообщения: 469
Коллизии можно настраивать в проекте
т.е. для одних блоке для других оверлап для третих игнор т.е. none
Изображение
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 46
Поясните пожалуйста, как работают эти настройки. Я должен туда ввести имя blueprint или как? И ещё один момент: если я настрою игнорирование, скажем, Ship, то эти настройки применятся ко всем таким объектам? Если так, то этот вариант не подойдёт, так как мне нужно, чтобы пули игнорировала ТОЛЬКО создавшего её корабля, но не игнорировала другие объекты того же типа (корабли других игроков). Как сделать игнорирование конкретного объекта, а не всего класса?
Аватара пользователя
Пользователь
Сообщения: 46
Так, возможно я на правильном пути. Есть такая функция Ignore Actor when Moving. Если в pawn (корабль) в цикле Event tick подавать на значение actor этой функции actor пули, а на значение target подавать ship mesh component (для персонажа и для пули используются практически не изменённые blueprint из заготовки Twin Stick Shooter), то корабль действительно игнорирует коллизию своих пуль. Но! Если сделать тоже самое в пули (actor - корабль, target - ProjectileMesh) и добавить после цикла event hit branch, где верно, если actor с которым сталкивается это корабль (дальше нет действий), а иначе - изначальный код без изменений, то имеем следующее: после появления пуля где-то секунд 5 висит на одном месте, а после исчезает. То-есть пуля не продолжает движение, игнорируя корабль, а останавливается после события event hit. Вопрос: как исправить этот момент?
Аватара пользователя
Пользователь
Сообщения: 46
В общем-то вопрос решён. Если кому интересно, то полный ответ на вопрос "Как заставить два конкретных объекта на карте игнорировать друг-друга?" выглядит так:
1) Выставьте в Event Tick у обоих компонентов функцию Ignore Actor when Moving, где на target подаёте компонент своего актера (для корабля это ShipMeshComponent, например - верхний компонент, для пули Projectile Mesh, хотя это может быть любой компонент, с которым выбранный actor не должен сталкиваться), а на actor подаёте actor, который вы хотите игнорировать (для корабля - actor пули, а для пули - actor корабля (если быть точным переменная pawn, в которую записывается корабль при создании пули)). Обязательно поставьте галочку у Should Ignore.
2) С pawn работу закончили. Если не работает (скорее всего у вас будет ситуация, как в предыдущем комментарии, когда пуля создаётся, но она неподвижна.), то проверьте, использует ли ваш actor пули ProjectileMovement (как у меня). Если да, то в настройках ProjectileMovement ищите раздел Activation. Убираете галочку с Auto Activate. Далее в цикле Event Tick ПОСЛЕ Ignore Actor when Moving пишите функцию Activate и подсоединяете туда ProjectileMovement.
3) Готово! Теперь два конкретных actor игнорируют друг-друга (именно конкретных - выставлял на локацию другие корабли (pawn) и они сталкиваются с пулей, а не игнорируют её).
Аватара пользователя
Пользователь
Сообщения: 589
Когда я задавал вот этот вопрос:
viewtopic.php?f=3&t=5533

Тогда была последней версия 4.15

Мне нужно было сделать что бы персонаж за которого ты играешь не мог выходить за пределы видимости камеры, а враги могли.
Я попробовал сделать свои коллизии и поставить вокруг невидимые стены. Но такой фокус не прошел. Не получалось установить на Pawn свою коллизию.
Поэтому решал задачу математическими вычислениями.

Сейчас в новых версиях движка можно на Pawn установить свой канал столкновений.
И всё будет работать.
Аватара пользователя
Пользователь
Сообщения: 138
коллизию пули ставь на оверлэп, когда спавниш пулю укажи ей владельца, далее внутри пули по эвенту оверлэпа проверяешь совпадает ли владелец пули с оверлепнутым объектом, если до - то это вы и никаких действий не требуется, если нет то наносите урон, уничтожаете пулю если надо, если нет то у вас суперпростая версия проникающего снаряда)


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница