Unity 3D中第一人称视角Camera相机抖动的原因及解决方法

文章目录

  • 前言
  • 问题反思
  • 解决方法
  • 错误代码
  • 修改后数据
  • 总结扩展

前言

在使用Unity自制第一人称FPS游戏时,场景运行时鼠标移动视角的时候,镜头出现抖动现象。


问题反思

出现抖动问题是因为相机跟随的代码放在了Update中,因为跟随目标的移动也是Update每帧执行。但是相机跟随一般是等跟随目标先移动,然后再执行跟随的代码。但是如果两者都放在Update中,执行的顺序不是固定的,所以会出现抖动情况。

解决方法

把Camera的跟随写到 LateUpdate 函数里,因为 LateUpdate 是在所有 Update 方法调用后被调用,这样就解决了人物在移动过程中,摄像机抖动的现象。

1.错误代码

代码如下(示例):(我一开始的代码)

// 相机转动
transform.rotation = Quaternion.Euler(rotationVector3.x, rotationVector3.y, 0);
// 玩家转动
playerTransform.rotation = Quaternion.Euler(0, rotationVector3.y, 0);

2.修改后数据

代码如下(示例):

// 玩家转动
playerTransform.rotation = Quaternion.Euler(0, rotationVector3.y, 0);
// 相机转动
transform.rotation = Quaternion.Euler(rotationVector3.x, rotationVector3.y, 0);

Camera因为要和玩家的角度同向,所以应当将这两行代码进行调换位置,应先让Camera的Rotation.y和玩家相同,然后再让Camera朝向鼠标的坐标,否则每帧运行时先朝向鼠标再和“身体”同步就会让视野抖动


总结扩展

在脚本的整个生命周期中,Unity 主要提供了3种更新方法:

1、Update():每一帧执行时,都会立即调用此方法。
2、LateUpdate():LateUpdate 是在所有 Update 方法调用之后被调用(语出圣典)。
3、FixedUpdate():固定更新。默认情况下,系统每0.02秒调用一次。

三者区别:

Update() 和 LateUpdate() 属于立即更新,更新之间的频率是不固定的,比如某一帧有一个耗时操作时,就会影响到下一帧更新时间,所以对更新频率要求比较稳定的物理系统(如Rididbody)就不太适合在这里处理更新。

FixedUpdate() 虽然是固定更新,但是其实也是相对固定的,比如某一帧耗了好几秒,它依然会卡住。不过正常的程序会优化耗时操作,小范围的帧率波动是正常的,可以让它更新的时间间隔稍微长一点,这样它的更新是比较平滑的。

关于Unity 3D第一人称视角移动时相机抖动的问题相关推荐

  1. 【Unity】第一人称视角开发

    需求 我的需求是在Unity构建一个第一人称视角,实现移动跳跃功能. 主要参考的是这篇博文提供的方案,不过该方案为了只允许一次跳跃,单独在人物底部构建了一个空对象,我无需此限制,因此对其进行了简化. ...

  2. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...

  3. OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现

    OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现 废话少说先上图: 图表 1第一人称视角效果图 源代码在文末. 为了学OpenGL,尝试各种代码示例是不错的选择.但是我就经常因为视角不合 ...

  4. unity实现坦克第一人称视角移动 鼠标发射,位置改变

    Holle 好久没更新了,实在想不到更新啥了,就更新下最近痴迷的unity吧. 分为四个板块,实现第三人称视角,上下左右移动,鼠标进行发射炮弹,鼠标改变移动方向 我们的需要准备的工作有:unity 自 ...

  5. unity中自制模拟第一人称视角

    public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...

  6. arduino 操纵杆_用Arduino做一台FPV(第一人称视角)遥控履带车

    这次和大家分享的这个项目结合了3D打印,Arduino和FPV(第一人称视角)相机的相关知识. 非常适合有兴趣制造自己的RC履带车,或者只是想使用3D打印,Arduino和FPV进行创造的伙伴们. 步 ...

  7. ThingJS平台制作第一人称视角下的巡更效果

    今天想要做一个类似巡更的过程,就像是在学校保安巡更,小区保安巡更一样.巡更需要用到相应的场景,比如说:园区.学校.超市以及工厂等等,然后需要规划好路线也就是巡更的路线,并且视角要跟随路线来变换,从而达 ...

  8. java第一人称射击_[转] Unity实践 --- 第一人称射击游戏_

    一. 环境 地图资源,包含了全地图以及灯光.天空盒子. 扩展部分. 不可穿透的部分需要在bake时设置为static. 二. 设置 1. 相机 1> 主相机 挂载控制视角的c#组件. tag为m ...

  9. 【游戏程序设计】Direct 3D第一人称摄像机

    因为浅墨的摄像机有镜头倾斜的问题,根据评论对其做了一些改变,最终可以让镜头不倾斜了. 具体改动的函数是绕上向量旋转的函数.将绕上向量旋转改为绕Y轴旋转即可.因为根据人的视觉习惯是绕Y轴旋转的. //- ...

最新文章

  1. ffmpeg 基本用法大全
  2. poj 1270(toposort)
  3. springmvc提供RestController方法接口返回json数据中文乱码
  4. C++字节序反转的实现算法(附完整源码)
  5. C语言 | 指向指针的指针排序
  6. 计算机专业英语主要句型及翻译技巧,计算机专业英语单词及翻译等技巧-20210420072747.ppt-原创力文档...
  7. 前端学习(3090):vue+element今日头条管理-参数传递
  8. setid android,android-如何将setId()用于imageView
  9. vue 多个回调_vue中多层组件间参数的传递、子孙组件回调父组件执行结果
  10. 【软件测试系列十二】《压力测试报告模板》
  11. 中国AI专利申请数超美国近2.5倍
  12. 有限元分析试题:ANSYS有限元分析中级培训考题及其答案解析(填空+选择+判断+解答)
  13. html画布抗锯齿,javascript – Node-Canvas图像抗锯齿似乎不起作用
  14. 输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少。(指针)
  15. 英语单词记忆(词缀 / 前缀)
  16. 400企业智能服务器,全球领先的企业级服务器、存储、融合系统及解决方案-H3C与HPE...
  17. 机器学习入门概念--心血总结--史上最强--入门必读--回味无穷
  18. linux memery dump
  19. 操作系统与计算机组织基本知识(一)
  20. php微信聊天带语音,使用Html5多媒体实现微信语音功能

热门文章

  1. TCP三次握手和四次挥手简述
  2. 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()
  3. 为什么 User 应该翻译为 「使用权人」 ?
  4. win7修改文件夹图标
  5. oracle数据库offline,Oracle表空间Offline的三种参数--1
  6. app收纳盒子-欢迎吐槽
  7. 清华同方连锁网吧监管解决方案(转)
  8. 四、用 ChatGPT 练习英语口语和听力
  9. airkiss技术原理
  10. python检验多重共线性_statsmodels中高多重共线性的捕获