类地铁跑酷Unity游戏编辑器运行正常 打包APK后角色换道抖动
问题修复方案
1. 修复相机跟随的帧率无关插值
你的相机位置插值用了固定的0.1作为Lerp参数,没有和帧率绑定,编辑器高帧率下表现平滑,移动端帧率低就会出现跟随卡顿、错位的视觉抖动。
修改CAMERAFOLLO.cs中的LateUpdate代码:
// 原代码 transform.position = Vector3.Lerp(transform.position, desiredPosition,0.1f); // 修改后 transform.position = Vector3.Lerp(transform.position, desiredPosition, 10f * Time.deltaTime);
你也可以把10f换成公共变量调整跟随顺滑度,该值越大跟随越紧。
2. 修复角色X轴移动过冲问题
当前角色横向移动的逻辑会在接近目标车道时出现过冲,来回修正位置导致抖动:
修改PLAYERLANEMOV.cs中moveVector.x的计算逻辑:
// 原代码 moveVector.x = (targetPosition - transform.position).normalized.x * speed; // 修改后 float xDiff = targetPosition.x - transform.position.x; moveVector.x = Mathf.Clamp(xDiff / Time.deltaTime, -speed, speed);
或者用更简单的Mathf.MoveTowards实现无过冲移动:
float targetX = targetPosition.x; float newX = Mathf.MoveTowards(transform.position.x, targetX, speed * Time.deltaTime); moveVector.x = (newX - transform.position.x) / Time.deltaTime;
3. 统一逻辑执行顺序
当前角色移动和相机跟随都写在LateUpdate中,执行顺序不确定会导致相机先更新、角色后移动的错位问题:
- 打开Unity的
编辑 > 项目设置 > 脚本执行顺序 - 将
PLAYERLANEMOV的执行顺序调到CAMERAFOLLO之前(数值越小执行越早) - 也可以将角色的移动逻辑从
LateUpdate迁移到Update中,相机保持在LateUpdate执行,天然保证角色移动完成后相机再跟随。
4. 增加移动端帧率稳定设置
在游戏启动逻辑(比如GameManager的Start方法)中添加以下代码,锁定移动端帧率减少波动:
QualitySettings.vSyncCount = 0; Application.targetFrameRate = 60;
内容的提问来源于stack exchange,提问作者Aravind
相关产品推荐
相关产品推荐

