Как убрать коллизию через blueprints в UE4
| |
gennady21 | Дата: Пятница, 30 Апреля 2021, 14:39 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте, такая тема. Хочу сделать так, чтобы коллизия убиралась до или после того как я удалил обьект, но она не убирается. Пытался многими вещами, но что-то не получалось. Уже почти чувствую, что я там где нужно, но не могу нормально убрать коллизию для определенного дерева после удаления его. Получаю все обьекты данного типа, записываю, после делаю перебор, если я пересекаюсь с триггером зоны дерева, тогда я вывожу True(1), перехожу в изменение коллизии, но вот тут начинаются танцы с бубном, вообще не понятно. Если посмотреть через саму игру, то всё меняется на Custom-Pawn-Ignored. Вроде всё должно работать, но нет!!! Возможно, где-то должна стоять галочка на динамическое изменение коллизии, либо же я не правильно выдаю ссылку на обьект, который должен меняться, но нет... Этого не может быть т. к обьект то меняет свои свойства коллизии на ignore. Хотя вот полностью на NoCollision не меняет, что странно. Вот фотки: https://imgur.com/gallery/xNGF8JC
|
|
| |
normal_ST | Дата: Пятница, 30 Апреля 2021, 15:14 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| Колизия объекта удаляется вместе с самим объектом после DestroyActor, нет нужды вручную её отключать перед этим.
Из чего делается вывод, что что-то работает не так. Смотря на твой код, вижу используется "IsOverlapping", спешу тебя огорчить, эта функция ОЧЕНЬ плохо работает, можешь сам потестить, при идеальных и простейших условиях, она кое-как работает, в ином случае, криво, но это лично мой опыт, да и по моему люди на форумах эпиков тоже жаловались, не помню.
Рекомендую использовать BeginOverlap На тригерах деревьев, заносить дерево которое соприкоснулось с игроком, в массив например, где его хранить дело десятое, например в GameInstance\GameMode, да или самом блюпринте игрока. После чего удалять именно те деревья, с которыми игрок соприкоснулся, а именно все из массива, не забудь после этого массив почистить методом "clear".
Соответственно EndOverlap нужно использовать если игрок перестал быть в тригере дерева, и удалять его из всё того же массива.
Ещё и избавишься от GetAllActorsOfClass функции, которая считается крайне прожорливой, и не рекомендуется к использованию, если этого можно избежать.
Удачи.
PS. Если инстанс блюпринта на карте удаляется 100%, но колизия остаётся, то это либо баг, и тут только в ансверхаб идти, либо что-то где-то недосмотрено(скорее всего). PS2. На всякий случай замечу, что колизия тут отключается у одного из компонентов блюпринта, а не всего блюпринта. Для отключения колизии всему блюпринту есть удобная функция SetActorEnabledCollision.
Recycler свой магазин в пост-апокалипсисе.
Сообщение отредактировал normal_ST - Пятница, 30 Апреля 2021, 15:23 |
|
| |
gennady21 | Дата: Пятница, 30 Апреля 2021, 16:07 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| В UE4 в TopDown проблема, не убирается коллизия предмета после DestroyActor. Всегда остается, что очень странно. Во всех пробовал, кроме TopDown работает нормально, а именно в нем ничего не получается нормально удалить, остается коллизия. Это можно как-то решить?
|
|
| |
normal_ST | Дата: Пятница, 30 Апреля 2021, 19:33 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Цитата gennady21 ( ) В UE4 в TopDown проблема, не убирается коллизия предмета после DestroyActor. Всегда остается, что очень странно. Во всех пробовал, кроме TopDown работает нормально, а именно в нем ничего не получается нормально удалить, остается коллизия. Это можно как-то решить?
Не имел дела с этим пресетом, только с FirstPerson работал. TopDown это ведь тот же ThirdPerson только камера сверху, и управление мышки изменено скорее всего, так что рекомендую отказаться от PlayerCharacter из этого пресета, и по быстрому сворганить свой, возможно там багулина, не забываем что эти пресеты чуть ли не с первых версий анриала, и там может что-то не работать.
Recycler свой магазин в пост-апокалипсисе.
|
|
| |
Navarh | Дата: Суббота, 01 Мая 2021, 09:03 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| gennady21, Есть подозрение, что коллизия находится не внутри актера, поэтому и не удаляется при DestroyActor.
|
|
| |
|