首页 > 其他 > 详细

UE4 third person第三人称摄像机设置的原理解释以及Control Rotation到底是个啥

时间:2020-08-13 00:13:08      阅读:196      评论:0      收藏:0      [点我收藏+]

1.Control Rotation 到底是是个啥:

首先作为游戏开发者,我们就是上帝,于是当我们需要摆布我们的角色的时候我需要知道他在哪(Location),他是什么姿势(rotation),他被放大了多少倍(Scale),除了姿势以外其他的信息都直接存在我的上帝之手中的一根指向我的傀儡的指针所指的位置(Pawn,我不需要特别了解,想知道的时候拿过来康康就可以了)。但是我呢,有点不对劲就特别喜欢知道他的姿势,于是我就自己一开始存了一个姿势,你可以当成是我的上帝之眼的姿势吧。我们经常在third person游戏中使用诸如 add playercontroller yaw pitch roll啥的函数,就是在变化我的上帝之眼的姿势这个姿势其实也是我们的playercontroller本身actor的rotation。只不过我们的控制器是不变的位置的,因为没意义。所以我们f8进行调试的时候就能在某个角落发现我们的上帝之眼了ORZ。

   技术分享图片技术分享图片

经过验证这个control rotation 就和actor rotation 一毛一样。 而且这个值跟摄像机啥的一毛钱关系都没有,从源码上来看只有 playercontroller 的rotation影响摄像机的rotation。而不存在反过来影响,control rotation就是一个很特别的存在。

技术分享图片

 

 2.在我们设置camera和spring arm的时候遇到的一些check box的作用机理。

技术分享图片

 

 首先是spring arm里面的 Use Pawn contorl Rotation这里就是问你用不用上帝之眼的姿势。注意这里的使用是Runtime时候使用所以勾选此选项在自己的角色中调整spring arm的rotation啥的都会显示变化,

剩下的三个选项就会影响你在editor中调整arm的rotation的时候是否会有对应的变化显示。

在此之前请我们看一下源码

 

 技术分享图片技术分享图片技术分享图片

 

 

 在spring arm更新自己的rotation的时候就是直接先看有没有使用上帝之眼用了的话就直接给我,然后再依次检查有没有继承父亲的rotation,没有继承的话就直接粗暴的给我用自己的relative rotation(这是一个固定值请注意)覆盖掉。这段代码的解读就能理解两个场景的原因了。

一:Character不适用上帝之眼而我们的spring arm使用,但是我们不继承任何一个relative rotation 分量此时看代码就知道,使用上帝之眼被无效化了因为全部被覆盖了。所以此时我们的第三人称环绕摄像机就没得用了。

二:Character使用上帝之眼时:

我们的spring arm 在不继承rotation选项的时候 spring arm无法呈现跟随的视角变化其原因就在于 DisiredRot统一被置换为0,0,0 而这个DisiredRot是用来决定springarm相对于armspring的起点的rotation的,所以也就被固定在那了。上帝之眼使用选项就变得没有意义了。。

当我们选择了继承选项的时候我们就不会覆盖为一个定值,因为我们的spring arm是得到的desiredrotation是component的rotation而我们知道component的rotation是自动跟着这个character更新的。也就时没问题,此时使用上帝之眼效果等价。

 

总结:一般情况不要把这个inherit选项全勾上以免固定式视角了。但实际上灵活的camera还不如直接自己设定relative rotation。需要注意的一点是:这里的disiredRot只是作用于当前的viewtarget的所以当character不转动时候我们的componentrotation就无法得到更新,此时我们仍然可以使用use pawn rotation来使得desiredRot得到更新

UE4 third person第三人称摄像机设置的原理解释以及Control Rotation到底是个啥

原文:https://www.cnblogs.com/Tonarinototoro/p/13493626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!