Трассировка лучей Unreal Engine 4, похоже, не игнорирует актера при вызове через чертежи

#c #unreal-engine4 #unreal-blueprint

Вопрос:

Итак, я создавал игру на движке Unreal Engine 4 и пытался использовать комбинацию C и чертежей. Все шло довольно гладко, но я занимался некоторым рефакторингом и решил вместо этого перенести функцию из моего класса оружия в чертеж. Функция, как показано ниже, берет ссылку на плеер, который она передает в функцию ShootRay, чтобы она знала, какого актера игнорировать с помощью raycast.

введите описание изображения здесь

введите описание изображения здесь

По какой-то причине, когда я попытался преобразовать функцию огнестрельного оружия в Чертеж, как показано ниже, луч попадает в плеер, несмотря на то, что я все еще передаю игрока в качестве Актера, которого нужно игнорировать.

введите описание изображения здесь

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

Примечание: Я знаю, что на изображении чертежа указано пользовательское событие, но это только потому, что я сделал снимок экрана после возврата его обратно на C и удаления тега BlueprintImplementable.

Ответ №1:

Ну, оказывается, по какой-то причине переменная длины в функции ShootRay была переполнена в схеме, но не в коде C . Удаление нескольких нулей устранило проблему…

Ответ №2:

(Не могу прокомментировать ваш ответ, поэтому напишу его так)

Да, это огромное число (думаю, для работы достаточно просто удалить 1 ноль). Может быть, в C он не переполнится, потому что попадание произойдет до того, как оно достигнет максимального 32-битного значения? Заканчивается ли когда-нибудь трассировка линии, если вы стреляете в воздух из-за переполнения (когда вы делали это только на C )? Это вызвало у меня любопытство, проверю это просто для удовольствия!

Я думаю, что, поскольку чертежи работают немного по-другому, через сценарии, он проверит значение вашего поплавка до начала операции, но я могу быть совершенно неправ. Все еще очень новичок в программировании.

Рад, что вы нашли свою проблему! Желаю удачи!