为什么PlayerController“拥有”偏航俯仰和摇摆,而角色“拥有”其位置?

瑞安

我是UE4的新手,正在尝试了解一些有关控制角色典当的基本概念。我正在摸索尝试实现一些角色移动逻辑。我要使用基本的WASD将角色向前,向后,左右移动-就像几乎每个基本的第一人称射击游戏一样。我还希望鼠标输入旋转字符。

我有自己的习俗PlayerControllerCharacter课程。

添加代码以前后左右移动角色-似乎都在角色类本身中。那里有一个叫做AddMovementInput的方法,似乎可以为我修改位置。这也使我认为角色类“拥有”自己的位置。这是有道理的,因为一次可能有一个以上的角色类别,每个角色类别都在不同的位置,对吗?

添加代码以旋转的字符具有一个用于控制旋转类似的方法- ,AddControllerYawInputAddControllerPitchInput AddControllerRollInput简单地看一下功能的名称,就表明偏航俯仰和横滚是由播放器控制器“拥有”的。查看功能的文档和注释可以进一步证明这一点:“将输入(影响Yaw)添加到控制器的ControlRotation(如果它是本地PlayerController)。” 因此,在我看来,偏航角和侧倾是玩家控制器“拥有”的值,对吗?

作为一个初学者,这使我感到困惑:我对位置存储在角色本身中但旋转似乎没有存储这一事实感到困惑。

我有兴趣学习如何“思考”角色或棋子动作。我只是不清楚,这让我迷上了这个话题。

盖泽

该设计的目的是将角色物理控制力学分开就编写软件而言,其想法是根据游戏交互机制角色在游戏世界内部的旋转与玩家控制的旋转分离例如,当我的角色的身体以某种方式向下倾斜时我可以向上瞄准(因此可能与位于其下方的物体发生物理碰撞)。

瞧,您对“谁拥有什么”的看法正确可以看到的是AController基类PlayerController,有一个成员变量ControlRotation类型FRotator该数据成员的文档说:

ControlRotation(可通过GetControlRotation()访​​问)确定受控Pawn的查看/瞄准方向。

GetControlRotation() 进一步澄清

daccess-ods.un.org daccess-ods.un.org这是全目标旋转,它可能不同于受控Pawn的旋转(例如,可以选择不进行视觉俯仰或滚动)。

如图所示,控制器旋转与角色自己管理的任何“旋转相关”保持独立。

这是在文档中进一步支持,为下例如见Pawn基类ACharacter):

典当是玩家或AI可以拥有的所有演员的基类。它们是关卡中玩家和生物物理表示

及以下AController

控制器是非物理角色,可以拥有Pawn来控制其动作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我同时拥有 root 和 mongodb 权限?

找到拥有角色的架构

俯仰和偏航-位置和传送

拥有和分组

cassandra中拥有和拥有(有效)之间的区别是什么

为什么拥有窗口显示在拥有窗口上方?

为什么我拥有Google,Yahoo,Mozilla和其他公司的不受信任的证书?

当您拥有AppCompatActivity和标准库时,为什么要包括最低SDK版本?

我同时拥有IPv4和IPv6公共地址。为什么?

如何同时拥有IN和NOT IN

为什么 IntoIter 不拥有这些值?

为什么Java的拥有与精密秒时区偏移的支持?

为什么StringBuffer的拥有,而StringBuilder的不是toStringCache?

为什么在Cassandra中拥有大分区如此糟糕?

为什么SELinux文件系统拥有自己的空设备?

为什么 root 拥有点点“..”目录?

拥有WebView时为什么要使用ImageView?

/ var / www为什么不拥有chmod 777

Linux,即使拥有组权限也为什么不能写?

为什么我可以返回对函数拥有值的引用?

为什么此函数返回(拥有的)值?

为什么克隆需要拥有变量的静态寿命

为什么Ubuntu拥有禁用的root帐户?

当您拥有componentDidUpdate时,为什么要使用getDerivedStateFromProps?

为什么拥有root特权的用户不再使用〜?

为什么/ usr / local /由root拥有?

为什么我的向量被重置而不是拥有自己的值?

为什么 __get__ 拥有一个所有者而 __set__ 和 __delete__ 没有?

在 SQL Server 数据库中拥有角色有什么意义?