本节摘要:当虚拟位移大于真实位移,感觉冲突达到峰值,移动方案是全册与眩晕正面交锋的战场。本节建立"预期管理"框架,拆解传送、平移、驾驶舱三大方案的机理与代价,给出视野收缩、虚拟鼻、动态视场等缓冲技术的实现要点,并交付一套按人群与内容选型的决策流程。
前两节把追踪与反馈对齐了,本节处理运动防线最后的、也是最难的一环:位移本身。用户坐着,角色要走一公里——这一公里就是冲突的满负荷剂量,第一节病理模型里的形态一冲突在这里登峰造极。移动方案设计的本质,不是选一个"最不晕"的动作,而是管理用户对运动的预期。
回看第一节的判断:可预期的运动远比被动的运动耐受。展开成一条设计公理——运动与用户意图的绑定越紧密、越可预期,冲突剂量越低。自己按键走、自己扳摇杆跑,视觉光流是"我要的结果";镜头被剧情拉着飞,同样的光流就成了"别人推着我动"。这解释了行业里的大量经验事实:同为高速运动,第一人称驾驶比过场动画耐受、自己操纵的过山车比坐着的过山车耐受、可预读的转弯比突袭的急转耐受。
公理之下有两条推论。推论一:永远给用户一个"暂停运动"的控制权,哪怕用不上,掌控感本身就降低焦虑性恶心。推论二:加速度比速度更危险——前庭对加速度敏感、对匀速失敏,所以同样的终点速度,缓起缓停的曲线比陡起陡停安全得多。
传送:用户指向落点,画面瞬间切换。它在切换瞬间彻底跳过了运动过程——没有加速度、没有连续光流,冲突剂量接近零,是生理上最安全的方案。代价在心理:位置连续性被切断,空间记忆难以建立("我刚才是从哪边来的"),强节奏玩法里打断心流。改良方向:短距离滑移传送(落点在视野内时改为快速滑动)、传送弧可视化(抛物线显示落点)、落点缓冲(落地后短暂惯性衰减)。
平移:摇杆推着角色连续走动,视觉光流连续、空间记忆完整,是最"像走路"的方案,也是冲突的主要来源。缓冲技术是平移方案的生命线:动态视野收缩(运动时视野边缘逐渐加暗圈,削弱外围光流对边缘视觉的刺激,边缘视觉恰是晕动敏感区)、脚印音效与风声(给身体伪造一点非视觉运动证据,给前庭"作证")、加速曲线缓入缓出。叠加使用后,多数轻度用户可以耐受中速平移。
驾驶舱:把用户"装进"一个载具或房间壳体里,壳体跟随运动、壳体内有稳定的近景参照物——驾驶舱框架、仪表盘、机舱壁。参照物给视觉系统提供"我与壳体相对静止"的证据,前庭的静止证词不再孤立。这正是第一节演练里"驾驶模拟器用运动平台喂前庭"的反向操作:没有运动平台时,用一个可信的壳体骗过视觉的外围。代价是壳体遮挡与设计束缚。
// Unity 移动方案骨架:平移 + 动态视野收缩 + 缓入缓出曲线 using UnityEngine; public class ComfortLocomotion : MonoBehaviour { public Transform head; // 主相机(头部) public CharacterController body; // 胶囊体 public CanvasGroup vignette; // 全屏暗角(透明度 0~1) public float maxSpeed = 2.4f; // 温和上限,避免高速光流 public float accelTime = 0.35f; // 缓入缓出时长 float speed; // 当前速度(带曲线) Vector2 stick; // 摇杆输入 void Update() { ReadStick(); // 指数趋近实现缓入缓出:目标速度突变时,实际速度平滑逼近 float target = stick.y * maxSpeed; speed = Mathf.Lerp(speed, target, 1f - Mathf.Exp(-Time.deltaTime / accelTime)); Vector3 fwd = ProjectOnGround(head.forward); body.Move(fwd * speed * Time.deltaTime); // 动态视野收缩:暗角透明度随速度上升,静止后回落 float t = Mathf.Clamp01(Mathf.Abs(speed) / maxSpeed); vignette.alpha = Mathf.Lerp(vignette.alpha, 0.75f * t, Time.deltaTime * 6f); } void ReadStick() { /* 读取输入设备摇杆,略 */ } Vector3 ProjectOnGround(Vector3 v) { v.y = 0; return v.normalized; } }
选型不是票选最爱,而是按约束谈判。人群约束:电竞年轻群体对平移耐受高、可少给缓冲;面向大众的内容默认传送或强缓冲平移;儿童与易感人群传送优先、且落点后给半秒稳定帧。内容约束:解谜探索类重空间记忆,平移加缓冲优于纯传送;竞技对战类操作密度高,平移几乎是必选;叙事体验类可用驾驶舱承载高速段落。场地约束:房间尺度的真实走动(物理位移直接映射虚拟位移)是零冲突的黄金方案,能覆盖的部分优先用物理位移,缺的部分才用虚拟移动补。
| 方案 | 冲突剂量 | 空间记忆 | 心流连续性 | 适用人群 |
|---|---|---|---|---|
| 物理走动 | 极低 | 最优 | 取决于场地 | 全员(场地够大) |
| 传送 | 极低 | 较差 | 割裂 | 大众、易感、儿童 |
| 缓冲平移 | 中 | 优 | 连续 | 多数成人 |
| 驾驶舱 | 低到中 | 中 | 连续 | 载具、叙事内容 |
💡 关键直觉:没有"最好的移动方案",只有"设置最全的方案"。成熟产品标配双方案切换加舒适档位,把选择权交回用户——这也呼应第一节的可预期性公理:掌控感本身是舒适参数。
动态视野收缩有两个陷阱:收缩太浅等于没有,收缩太深等于戴潜水镜——可参考的区间是运动时外围暗角覆盖视野边缘的一到两成,且淡入淡出都要平滑;另一个陷阱是暗角中心偏移,暗圈应对称于视轴而非屏幕中心。虚拟鼻的思路是视野中央下方常驻一个微小参照物,原理同驾驶舱壳体,行得通但审美代价高,多用于医疗等不得不平移的场景。楼梯与地形起伏要单独处理:上楼梯时的垂直光流叠加俯仰,是冲突重灾区,能替换成传送台阶就替换。
⚠️ 常见坑:把舒适选项藏在设置深处。多数用户不会进设置菜单,默认档就是事实上的全员档——默认档必须按易感人群校准(呼应第一章的画像结论),激进档才留给进阶用户解锁。
给定需求:解谜探索玩法,单人剧情,目标用户含大量初次接触 VR 的玩家,其中有云端跳跃段落。按流程走:第一步盘点物理位移——客厅尺度,仅能覆盖小范围站立移动。第二步主体方案——缓冲平移承担探索,传送承担跨 gap 与上行台阶。第三步高速段落——云端滑翔用驾驶舱化处理:给玩家一个滑翔翼框架作为近景参照物,风声与框架帆面抖动提供非视觉运动证据。第四步缓冲档位——默认强缓冲(暗角、缓曲线、低速上限),设置里提供"进阶"解锁。第五步验收——按第一章基线流程跑易感用户小组,恶心分项与完成率双达标才收工。
至此运动防线闭合:追踪对齐位置、反馈闭合回路、移动方案管理预期。下一章转入内容防线——场景本身的尺度、光照与声音如何继续给前庭系统递"世界正常"的证据。