为什么“投放到BP_Ladder”始终失败?

时间:2019-01-18 15:05:04

标签: unreal-engine4 blueprint

我在虚幻引擎4项目中遇到麻烦。我对此很陌生,我不太了解发生了什么。我已经完成了梯子功能,因此角色可以爬上梯子并站立在顶部的静态网格物体上。但是,当我想走下梯子时,我想在Actor“ BP_Ladder”上触发“ Allow Down”功能,但是每次转换都失败。是什么导致强制转换失败?

我环顾四周,其他因转换失败而遇到问题的人的名字大多不正确,但我的梯子称为“ BP_Ladder”,这就是我要转换的内容,这让我感到非常困惑。

我的BP_Dude蓝图(这被称为每个刻度) my BP_Dude blueprint

我的BP_Ladder蓝图(这是我要触发的东西) My BP_Ladder blueprint

此功能的目标是关闭静态网格物体的碰撞,然后像往常一样允许我向下移动梯子。

我真的很感谢您的帮助,在我使用虚幻引擎的前几天以及我遵循的Epic Games教程中,并没有显示所有蓝图,因此每个人都将一半的蓝图弄成无奈。

2 个答案:

答案 0 :(得分:2)

了解演员表

以最简单的形式,如果可以将Actor强制转换为BP_Ladder,则它将在输出引脚上返回强制转换的对象。

只是为了确保您知道强制转换的工作原理,我必须指出,您不能将给定类型强制转换为一些不相关的任意类型。它必须是“可广播的”到演员的目的地。因此,如果您认为重叠产生的Actor对象是真正的BP_Ladder或从BP_Ladder派生的蓝图类,那么您应该可以。但这必须是事实。否则每次都会失败。

https://docs.unrealengine.com/en-us/Engine/Blueprints/UserGuide/CastNodes

对不起,如果我正在光顾,但是如果演员表无法正常工作9/10,则表示使用不正确。


调试

好的,如果您认为您确实在强制转换为正确的类型,但仍然失败,那么您将需要调试蓝图,以查找将哪种类型赋给强制转换的节点。导致失败。

  • 在蓝图中选择投射对象。
  • F9 创建一个断点;投射框的左上方应该会出现一个红色圆圈
  • 以PIE模式运行游戏(播放旁边的组合,新编辑器窗口(PIE)
  • 将游戏放置在您的演员将解雇的情况下(我想触摸梯子)
  • 断点应触发;您的游戏窗口将变为灰色,并且您将获得一个大红色箭头,向下指向放置断点的投射框
  • 将鼠标悬停在转换框输入侧的Object引脚上。它应该显示一个包含该变量详细信息的替代文本。
  • 在替代文本框中,查找当前值;这应该向您显示您将要投射的当前对象类型。您需要确保该值符合您的期望。

https://docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/Debugging

示例

我拍了一个正在运行的游戏的屏幕截图;在此您将看到:

  • 在功能节点(框)上显示断点(红色圆圈)
  • 执行节点(红色箭头)为Create Rolling Stock
  • 变量的当前值DepotComponent...Depot

Example Blueprint breakpoint triggered


最终想法

使用蓝图时有一些陷阱。在这种情况下,其中之一可能是您可以拥有两个具有相同名称的类(尽管它们可能具有不同的内部“脚本名称”-实际上是完全限定的路径)。调试对象变量时,请确保将整个路径与资产在内容文件夹中的位置匹配;这样可以确保您确实尝试投射到您认为自己确实是的对象。

另一个经典的陷阱是“热重装”。有时,编辑器需要在动态构建后重新加载模块,但内部会发生类冲突;这会导致该类的新版本使用其他名称(以HOTRELOADED前缀)。当心这个;它可能导致您在投射时要处理两种不同的类型,而您甚至没有意识到。真正的理智主义者。如有疑问,请关闭并重新打开编辑器。每次都会修复它。

答案 1 :(得分:1)

“开始重叠”仅在您开始重叠时才触发,因此,如果您有将“可以爬升”设置为false的逻辑,则需要移动到对撞机之外,然后再次进入对撞机以进行另一个“开始重叠”事件。