Unreal Engine 4 光线追踪在通过蓝图调用时似乎不会忽略演员

Unreal Engine 4 ray tracing doesn't seem to ignore actor when called through blueprints

所以我一直在 Unreal Engine 4 中制作游戏,并且我一直在尝试结合使用 C++ 和蓝图。它一直进行得相当顺利,但我正在做一些重构,并决定将我的枪 class 中的一个功能移到蓝图中。如下所示的函数引用了它传递给 ShootRay 函数的播放器,以便它知道在光线投射时要忽略哪个 Actor。

出于某种原因,当我尝试将 FireGun 函数转换为如下所示的蓝图时,尽管我仍然将玩家作为要忽略的 Actor 传入,但光线仍然击中了玩家。

我不明白为什么这会在 C++ 中起作用但在蓝图中不起作用,但我猜它与从 C++ 调用蓝图函数有关,然后调用其他 C++ 函数导致奇怪的事情发生。我真的很想在蓝图中包含这段代码,以便以后轻松扩展。有谁知道是怎么回事吗?

注意:我知道在蓝图的图像中它说自定义事件,但这只是因为我在将其恢复为 C++ 并删除 BlueprintImplementable 标签后截取了屏幕截图。

嗯,由于某种原因,ShootRay 函数中的长度变量在蓝图中溢出,但在 C++ 代码中没有溢出。删除几个零解决了问题...

(无法评论你的回答,就这样写)

是的,这是一个巨大的数字(我想只需删除 1 个零就足够了)。也许在 C++ 中它不会溢出,因为命中发生在它达到最大 32 位值之前?如果你因为溢出而在空中射击(当你只用 C++ 完成时),线条跟踪会永远结束吗?这让我很好奇,会测试它只是为了好玩!

我认为因为蓝图的操作有点不同,通过脚本,它会在操作开始前检查您的浮点数的值,但我可能完全错了。对编程还是很陌生。

很高兴您发现了问题!祝你好运!