如何强制围绕空间中的一点进行轨道运动,同时保持玩家的前进/后退能力?

问题描述 投票:0回答:3

冗长的问题,我将提供一张我想要的图表:

红色方块代表角色,蓝色矩形代表相机,绿点代表“舞台”的中心,黑色圆圈代表舞台本身。

我想要的是基本上将玩家的移动锁定在舞台的“中心”周围,这样无论何时你向左或向右移动,你或多或少都会围绕所述中心旋转。然而,我也希望玩家能够向前和向后移动到中心/从中心移动。请记住,我希望摄像机始终位于玩家的正后方。我尝试了很多不同的方法,最新的如下:

我选择了一个默认演员,附加了一个弹簧臂,将一个儿童演员附加到其上(被附身成为可玩角色),附加了另一个弹簧臂,最后将相机附加到其上。然后,我将蓝图代码添加到第一个弹簧臂,以便它由左/右控件控制。然而,点击播放后,唯一移动的是相机,而且它只能向前和向后移动。

诚然,我对虚幻蓝图相当陌生,因此我们将不胜感激。

unreal-engine4 unreal-blueprint
3个回答
4
投票

好吧,我明白了。

如果其他人想要类似的东西,这是所需的设置。

对于玩家本身,你需要这样的东西:

重要的是将根网格放置在要旋转的位置的中心。弹簧臂的目标臂长度将受到玩家网格运动的影响,从而产生您正在物理移动角色的错觉。除非您希望更好地控制摄像机到玩家的距离,否则不需要第二个弹簧臂。

对于旋转蓝图,您需要这个:

目标是您命名的根网格物体。 (我的称为中心)将其从层次结构中拖放。

对于向前/向后运动,您需要这个:

目标就是您所说的弹簧臂。 (我将我的设置为默认的“SpringArm”)再次,只需将其从层次结构中拖放即可。

项目设置调整:

是的,我的输入与你的想法相反。我觉得反转输入比调整导致运动向后的任何因素更快。 (这可能只是球体方向。)此外,您会注意到我将 w 和 s 输入设置为 5 或 -5,而不是 1 或 -1。这是因为否则移动速度很慢。我确信有一个修复不涉及更改输入轴比例,但老实说,我真的没有理由在项目中的任何点更改这些值。如果它出现在我确实需要的地方,我确信无论如何都有一个旁路可以更改蓝图中的值。

最终结果:

最终结果视频


0
投票

如果我没记错的话,子角色组件与其他组件有点不同,因为它们是独立于变换的,也就是说,当父组件移动时,它们不会更新其变换。

我觉得你将玩家演员和相机组件分开有点奇怪。通常,玩家“pawn”包含一名玩家的网格和相机组件。

我建议您执行以下操作:

  • 创建一个玩家 actor(例如“pawn”或“character”类)
  • 创建以下组件层次结构:

    根场景 -> 弹簧臂 -> 骨架或静态网格体 -> 弹簧臂 -> 相机

您的根场景是绘图中的绿色中心。然后,您基本上可以使用已有的蓝图来旋转和移动玩家。


0
投票

我做的没有弹簧臂和其他组件:

https://www.youtube.com/watch?v=PWNdnon-dkA

© www.soinside.com 2019 - 2024. All rights reserved.