虚幻引擎 4 光线追踪在通过蓝图调用时似乎不会忽略角色

问题描述

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

enter image description here

enter image description here

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

enter image description here

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

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

解决方法

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

,

(无法评论你的答案,所以会这样写)

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

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

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