1. 项目概述:什么是AVC - Arcade Vehicle Controller?
如果你正在Unity里捣鼓一个赛车游戏、飞行射击或者任何需要载具的街机风格项目,并且被Unity自带的WheelCollider那套复杂又难调的物理系统搞得头大,那你很可能需要AVC。AVC,全称Arcade Vehicle Controller,是一个专门为“爽快感”而生的载具控制系统。它不像那些追求极致物理真实的模拟器,它的目标非常明确:让你用最短的时间,做出手感流畅、操控直观、玩起来“很带感”的街机载具。
我最初接触AVC是因为一个快节奏的多人竞速小游戏项目。当时我们试过从零写物理,也试过其他一些物理资产,不是调参调到天昏地暗,就是手感过于“笨重”,玩家反馈总是“不够爽快”。直到用了AVC,它的设计哲学一下子就对上了——它用一套经过精心设计的简化物理模型,避开了真实物理中那些让操控变“黏糊”的复杂因素(比如过于真实的轮胎侧滑、悬挂形变),转而提供清晰、响应迅速且可预测的输入反馈。简单来说,你按左,车就利落地左转;你加速,车就立刻有推背感;你想来个漂移,调一个参数就能轻松实现那种“甩尾”的弧线。
这套系统最核心的价值在于它的“易用性”和“可定制性”的平衡。它自带一个叫“Vehicle Builder”的编辑器窗口,你只需要把模型拖进去,指定一下哪个是车身、哪几个是轮子,点一下按钮,一个基础可驾驶的载具就诞生了,整个过程可能不到一分钟。而所有的核心参数,比如最高速度、加速度、转向灵敏度、漂移系数,都被封装在一种叫ScriptableObject的Unity资源里。这意味着你可以创建一套“手感模板”(比如“卡丁车手感”、“重型卡车手感”、“悬浮艇手感”),然后批量应用到几十上百个不同的载具模型上,管理和迭代效率极高。
2. 核心设计思路:AVC如何实现“街机感”?
要理解AVC为什么好用,得先明白它和真实物理模拟(比如Unity的WheelCollider)以及完全无物理的“假驾驶”之间的区别。
2.1 物理模拟的取舍:简化而非缺失
AVC并没有完全抛弃物理。它底层依然依赖Unity的Rigidbody(刚体)组件来提供基础的碰撞检测和运动学计算。但是,它巧妙地避开了最复杂的部分——轮胎与地面的精确摩擦模型。
在真实物理中,一个轮胎的抓地力受材质、压力、温度、滑移率等无数因素影响。WheelCollider试图模拟这些,结果就是参数巨多(侧滑刚度、前进刚度、滑移曲线等),且相互耦合,调出一个稳定又好玩的手感非常困难。AVC的做法是:用一个或多个球体碰撞体(Sphere Collider)或一个盒体碰撞体(Box Collider)来近似代表整个车辆的碰撞体积。车辆的移动和转向,不再是通过每个轮胎单独施加力,而是通过直接计算并施加一个作用于车辆刚体质心的综合力与扭矩。
这样做的好处是:
- 性能开销低:计算几个球体的碰撞,远比计算四个复杂轮胎的连续碰撞检测要省资源。
- 手感稳定可控:因为物理交互被简化了,所以输入(油门、转向)到输出(车辆运动)的映射关系非常清晰。开发者可以通过几个直观的参数(如
TurnSpeed转向速度、DriftAmount漂移量)直接塑造手感,而不用去和一堆晦涩的物理参数搏斗。 - 兼容性强:你的载具模型不需要有物理上精确的轮子悬挂结构。哪怕轮子是嵌在车身里的,或者你的“车”根本就是个飞碟、一艘船,AVC都能让它动起来,因为它的运动不依赖于悬挂系统的物理模拟。
2.2 操控逻辑:输入到运动的直接映射
AVC的操控逻辑是“结果导向”的。我们来看一个典型的转向实现思路(非AVC源码,但原理相通): 在FixedUpdate中,它会根据玩家的水平输入(-1到1),结合当前速度,计算出一个目标转向角度或旋转速度。然后,通过Rigidbody.AddTorque在车辆的上方向(Y轴)施加一个旋转扭矩。这个扭矩的大小,会由TurnSpeed(转向速度)这个参数控制,并且通常还会与当前速度关联——高速时转向更平缓,低速时转向更灵敏,这符合直觉,也避免了高速下的失控。
对于加速,它同样不是简单给一个恒力。AVC内部会计算一个“目标速度”,比如根据油门输入和MaxSpeed(最大速度)参数得出。然后通过Rigidbody.AddForce在车辆前进方向施加力,使当前速度逼近目标速度。同时,它还会计算一个“引擎阻力”,当你松开油门时,车辆会有一个自然的减速感,这个阻力的大小也是可调的。
漂移的实现是AVC街机感的精髓之一。在真实漂移中,是后轮失去抓地力产生侧滑。在AVC中,这通常通过一个“漂移系数”(0到1)来实现。当玩家按下“漂移键”(如空格键)时,系统会临时降低车辆转向的“抓地力”效果,同时可能增加一个额外的、垂直于车身朝向的侧向速度分量。这样,车辆在转弯时就会产生一个华丽的、可控的侧滑轨迹。这个系数调成0.3和0.7,手感差异会非常明显,让你轻松做出从轻度甩尾到原地转圈的各种效果。
2.3 模块化与数据驱动设计
这是AVC在工程上非常优秀的一点。它将载具的“数据”和“行为”分离。
- 数据层(ScriptableObject):
VehicleSettings。这里存放了所有定义载具手感的参数:速度、转向、漂移、车身倾斜(Tilt)等。你可以像创建材质球一样创建多个.asset文件,命名为“SportsCarSettings”、“MonsterTruckSettings”。 - 行为层(MonoBehaviour):
VehicleBehaviour。这是挂在载具预制体上的核心组件。它读取VehicleSettings中的数据,并在每帧根据输入和物理状态执行相应的运动逻辑。
这种设计带来了巨大的灵活性:
- 热重载:在Play模式下,你调整
VehicleSettings的参数,效果能实时反馈到运行的载具上,调试手感无比方便。 - 资源共享:所有使用同一套
VehicleSettings的载具,手感完全一致。想统一调整所有“轻型车”的操控?改一个文件就行。 - 逻辑清晰:
VehicleBehaviour脚本只关心“怎么做”,不关心“参数是什么”,代码结构更干净。
3. 从零开始:快速创建一个AVC载具
理论说再多不如动手做一遍。我们假设你已经从Unity Asset Store获取了AVC插件,并导入到项目中。下面是最快的上手流程。
3.1 准备你的载具模型
首先,你需要一个3D模型。对AVC来说,模型只需要满足基本要求:
- 模型最好有一个作为“根”的空物体,下面挂载着车身(Body)和车轮(Wheels)的子物体。这是最清晰的结构。
- 车轮物体最好以自身轴心点为旋转中心。如果车轮模型的轴心不在几何中心,AVC也提供了工具(
Fix Wheel Rotation)来校正,这个我们后面会提到。 - 给模型分配好层级(Layer),比如“Vehicle”。AVC需要正确的层级设置来进行地面检测。
一个推荐的结构如下:
Car_Root (GameObject, 挂载VehicleBehaviour等组件) ├── Body (MeshRenderer, 车身模型) ├── Wheel_Front_Left (MeshRenderer, 左前轮模型) ├── Wheel_Front_Right (MeshRenderer, 右前轮模型) ├── Wheel_Rear_Left (MeshRenderer, 左后轮模型) └── Wheel_Rear_Right (MeshRenderer, 右后轮模型)3.2 使用Vehicle Builder一键构建
这是AVC的“王牌功能”。在Unity编辑器顶部菜单栏,找到AVC -> Vehicle Builder。
- 打开Builder窗口:窗口打开后,你需要将场景中或项目里的模型根节点(比如上面的
Car_Root)拖拽到“Vehicle Root Object”字段。 - 指定部件:
Vehicle Body:拖入你的车身模型(如Body)。Wheel Objects:这是一个列表,将你的四个(或更多)车轮模型依次拖入。顺序通常是:左前、右前、左后、右后。AVC支持两轮(摩托车)、三轮甚至更多轮子的配置。Vehicle Settings:这里可以指定一个已有的VehicleSettingsScriptableObject,或者留空,让Builder使用默认值创建一个新的。
- 选择碰撞体类型:在Builder中,你可以选择使用“Sphere Collider”模式还是“Box Collider”模式。这是v1.11版本后加入的重要功能。
- Sphere模式(传统):为每个车轮位置生成一个球体碰撞体,模拟四个接触点。这是早期版本的方式,对于大多数地面轮廓跟随较好。
- Box模式(推荐):为整个车身生成一个盒体碰撞体。性能更好,物理交互更稳定,尤其是在复杂地形上翻滚或碰撞时。从v1.5开始,新建载具默认强制使用Box模式,旧模式正在被淘汰。
- 点击构建:点击窗口中的“Build Vehicle”按钮。AVC会自动完成以下工作:
- 为根物体添加
Rigidbody和VehicleBehaviour组件。 - 根据选择添加球体或盒体碰撞体。
- 创建必要的子物体来管理车轮视觉旋转和转向。
- 如果
VehicleSettings为空,会在项目资源中创建一个默认设置文件。 - 自动配置好层级和标签。
- 为根物体添加
实操心得:第一次使用Builder后,务必检查生成的结构。特别是车轮的“Wheel”子物体下,应该有一个负责视觉旋转的物体和一个负责物理碰撞的物体(如果是Sphere模式)。确保视觉轮子模型能正确旋转。如果发现轮子转起来位置不对,就是模型轴心问题,需要用
Fix Wheel Rotation工具。
3.3 基础参数调校:打造第一版手感
构建完成后,选中你的载具根物体,查看VehicleBehaviour组件。你会看到一个Vehicle Settings字段,链接着一个ScriptableObject。双击它进行编辑。
这里有几个最核心、最先需要调整的参数:
Speed(速度相关):
Max Speed:最大速度。注意,在v1.22版本前,这个值有个内部系数,设置1可能实际很快。v1.22后修复了,但如果你从旧版升级,可能需要把所有速度值除以6。新手最容易在这里踩坑,觉得车怎么慢得像爬,或者快得离谱。Acceleration:加速度。值越大,达到最大速度越快。Reverse Speed:倒车最大速度。Brake Strength:刹车强度。值越大,刹车越猛。
Turning(转向相关):
Turn Speed:转向速度。这是转向灵敏度的主控参数。值越大,转向响应越快。这是影响“手感”最关键的参数之一。Turn Speed Adjust By Speed:是否根据速度调整转向。通常勾选,这样高速时转向会自然变缓,增加稳定性。Can Turn When Stationary:静止时能否转向。对于汽车通常关闭,对于坦克或某些特殊载具可以开启。
Drifting(漂移相关):
Drift Amount:漂移量。0为无漂移,1为最大漂移。这是塑造街机感的灵魂参数。从0.3开始尝试,你会立刻感受到过弯时车尾开始滑动。Drift Input:触发漂移的输入键。通常设置为独立的按键(如空格)。
Body Tilt(车身倾斜):
Forward Tilt:前后倾斜。加速时车头上扬,刹车时车头下压。给速度变化增加视觉反馈。Turn Roll:转弯侧倾。转弯时车身向内倾斜,模拟离心力效果。很小的值(如0.1)就能带来显著的视觉提升,让驾驶感更生动。
我的调试流程:我通常会先设一个合理的Max Speed(比如30),然后把Turn Speed调到中间值(比如5)。进入Play模式,开车跑一圈,感受基础转向。如果觉得“转不动”,就加大Turn Speed;如果觉得“太飘”或容易翻车,就减小它。然后,尝试过弯时按下漂移键,调整Drift Amount直到出现你想要的甩尾幅度。最后,加上一点Forward Tilt和Turn Roll(比如都设0.05),视觉反馈立刻就不一样了。
4. 深入核心功能与高级配置
掌握了基础创建和调参,我们来看看AVC那些让项目脱颖而出的高级特性。
4.1 悬浮与滑行:突破地面限制
AVC的“Arcade”特性让它不仅能做车,还能做气垫船、悬浮摩托、宇宙飞船。关键在于理解它的“地面检测”和“悬空行为”。
在VehicleBehaviour或VehicleSettings中,有一个Ground Check相关的设置。它通过从车辆中心向下发射射线来检测是否“接地”。当车辆悬空时,AVC会进入一种不同的运动模式。
- 空中控制:默认情况下,车辆在空中时,你仍然可以进行一定程度的转向和俯仰控制(对于支持悬浮/飞行的载具)。这通过
Air Control参数调节。如果你想做一架直升机,你可以调高这个值,并配合Strafing(平移)功能,实现全方位的空中移动。 - 车身朝向对齐:v1.5版本增加了一个很棒的功能:
Rotate To Ground In Air(在空中时向地面旋转)。当车辆飞越坡道跳起时,如果开启此选项,车辆在空中会自动调整姿态,使其底部朝向地面法线。这能让跳跃和落地看起来更自然,而不是僵硬地保持起跳角度。 - 地面跟随模式:v1.5还引入了
Tight/Loose Ground Follow选项。Tight模式会让车辆紧密贴合地面轮廓,适合越野车;Loose模式则允许车辆在颠簸路面保持更稳定的车身姿态,减少上下晃动,适合高速赛车。
实现一个基础悬浮车:
- 像普通车一样用Builder创建。
- 在
VehicleSettings中,将Ground Check Distance(地面检测距离)设为一个很小的值(如0.1),甚至为0。 - 调整
Air Control参数到一个较高的值(如0.8)。 - 此时车辆将始终处于“悬空”状态,移动会非常平滑,没有地面摩擦感。你可以再结合粒子特效(在车轮位置播放),模拟悬浮引擎的效果。
4.2 视听效果集成:引擎声、漂移烟与碰撞火花
从v1.5版本开始,AVC原生集成了音频和特效系统,这让载具的沉浸感上了一个大台阶。
Vehicle Audio组件:这是一个可以添加到载具上的独立组件。它提供了几个关键事件:
Engine Start/Stop/Running:可以关联引擎启动声、怠速循环声、熄火声。Engine Running声音的音调和音量可以根据当前引擎转速(与车速相关)进行动态调节,实现转速越高声浪越尖厉的效果。Drifting:漂移时触发的音效,比如轮胎摩擦声。Collisions:碰撞时根据力度播放的音效。 你需要做的就是创建几个AudioSource,分别挂上对应的音频片段,然后拖拽到Vehicle Audio组件的相应插槽中。AVC会在适当时机自动播放它们。
Vehicle Effects组件与Collision Manager:
Collision Manager组件负责监听物理碰撞事件,并将其转发为更易用的事件(如OnVehicleCollisionEnter)。Vehicle Effects组件则可以监听这些事件,触发粒子系统。例如,在发生碰撞时,在碰撞点生成一阵火花粒子;在漂移时,在车轮后方生成烟雾和轮胎痕(通常使用Trail Renderer或贴花系统)。- 漂移特效:这是街机风格的标志。AVC将漂移设置也做成了ScriptableObject(
DriftSettings),里面可以配置漂移时触发的粒子系统和音效。你需要先创建并配置好一个粒子系统(比如一个烟雾粒子),然后在DriftSettings中引用它。当玩家漂移时,Vehicle Effects会自动在每个参与漂移的车轮位置实例化这个粒子效果。
避坑指南:集成特效时,最常见的两个问题是粒子位置不对和性能开销。第一,确保你的粒子系统预制体的轴心点在底部中心,这样实例化时才会出现在车轮接地位置。第二,一定要使用对象池来管理这些瞬时粒子,避免频繁的Instantiate和Destroy。AVC本身不包含对象池,你需要自己实现或使用第三方池化插件,在
Vehicle Effects的事件回调中去池子里取用和归还粒子对象。
4.3 多轮与特殊载具配置
AVC不仅限于四轮汽车。通过其扩展组件,可以轻松配置摩托车、三轮车、六轮卡车甚至坦克。
- 两轮摩托车:在Builder的
Wheel Objects列表中只放入前轮和后轮两个对象。AVC会自动识别为两轮模式。摩托车需要更强的车身倾斜(Body Tilt)来模拟过弯压弯的感觉,你可能需要显著增加Turn Roll的值。 - 额外车轮旋转与转向:对于超过四个轮子的载具(比如六轮越野车),AVC提供了
Additional Wheel Rotator和Additional Wheel Turner组件。假设你的车有6个轮子,Builder只处理了4个。你可以把剩下的两个轮子模型拖到这两个组件的Extra Wheels列表里。Rotator组件会让这些轮子根据车速旋转,Turner组件会让它们根据转向输入转动(对于转向轮)。这让你能用标准四轮流程快速搭建基础,再灵活扩展。 - 坦克或履带车:虽然AVC没有直接的履带物理,但你可以利用其“平移”(Strafing)功能来模拟。坦克通常可以原地转向。你可以设置一个载具,允许
Turn When Stationary(静止转向),并且将Strafing(平移速度)设为0,这样它就会以车体中心为轴旋转,而不是像汽车那样绕一个弧线转弯。
5. 输入与控制:连接玩家与载具
AVC的核心VehicleBehaviour脚本提供了丰富的公共方法(如ControlAccelerate,ControlBrake,ControlTurn,ControlDrift),但它本身不处理输入。这给了你最大的灵活性去集成任何输入系统。
5.1 使用经典Input Manager
AVC包内自带一个ExampleInput.cs脚本,展示了最基础的输入处理。你可以参考它来写自己的输入控制器:
public class SimpleCarInput : MonoBehaviour { public VehicleBehaviour vehicle; // 拖入你的VehicleBehaviour组件 void Update() { // 获取标准输入轴 float accelerate = Input.GetAxis("Vertical"); float turn = Input.GetAxis("Horizontal"); bool isBraking = Input.GetKey(KeyCode.S); bool isDrifting = Input.GetKey(KeyCode.Space); bool isBoosting = Input.GetKey(KeyCode.LeftShift); // 将输入传递给载具 if (vehicle != null) { vehicle.ControlAccelerate(accelerate); vehicle.ControlTurn(turn); vehicle.ControlBrake(isBraking); vehicle.ControlDrift(isDrifting); if (isBoosting) vehicle.Boost(); // 调用Boost方法 } } }5.2 集成Unity新的Input System
新的Input System更加强大和灵活,支持手柄、触摸屏等。集成起来也很直接:
- 创建Input Actions Asset(
.inputactions文件),定义你的操作(Action),如“Accelerate”(值为<Gamepad>/rightTrigger和<Keyboard>/w)、“Turn”(值为<Gamepad>/leftStick/x和<Keyboard>/a/d)、“Brake”、“Drift”等。 - 在输入控制脚本中,使用
PlayerInput组件或直接引用InputAction。
using UnityEngine; using UnityEngine.InputSystem; public class NewInputSystemCarController : MonoBehaviour { public VehicleBehaviour vehicle; private PlayerInput playerInput; private InputAction accelerateAction; private InputAction turnAction; private InputAction brakeAction; private InputAction driftAction; void Start() { playerInput = GetComponent<PlayerInput>(); accelerateAction = playerInput.actions["Accelerate"]; turnAction = playerInput.actions["Turn"]; brakeAction = playerInput.actions["Brake"]; driftAction = playerInput.actions["Drift"]; } void Update() { if (vehicle != null) { vehicle.ControlAccelerate(accelerateAction.ReadValue<float>()); vehicle.ControlTurn(turnAction.ReadValue<float>()); vehicle.ControlBrake(brakeAction.ReadValue<float>() > 0.1f); // 假设是按钮 vehicle.ControlDrift(driftAction.ReadValue<float>() > 0.1f); } } }5.3 移动端触摸控制
对于手机游戏,你需要虚拟摇杆或触摸区域。AVC的输入方法接受float值,所以你可以很容易地将虚拟摇杆的输出(-1到1)传递给ControlTurn和ControlAccelerate。
一个简单的双区域触摸方案:
- 屏幕左侧一个大区域,触摸滑动控制转向(将滑动的横向位移比例映射到-1到1)。
- 屏幕右侧一个大区域,触摸时加速,松开时减速或刹车。
- 在屏幕某处放置一个固定的漂移按钮。
关键是将触摸输入的坐标变化,平滑地转换为连续的float值,避免输入阶跃导致车辆操控突变。可以使用Mathf.Clamp和Mathf.Lerp进行平滑处理。
6. 常见问题排查与性能优化
即使有了AVC这样优秀的工具,在实际项目中还是会遇到各种问题。下面是我和社区里常见的一些坑及其解决方案。
6.1 载具行为异常问题排查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 车辆完全不动 | 1.VehicleBehaviour组件未正确获取Rigidbody引用。2. 输入脚本未正确关联 VehicleBehaviour。3. 车辆与地面层级未正确设置,导致永远检测不到地面。 | 1. 检查VehicleBehaviour的Vehicle Rigidbody字段是否已赋值。2. 检查输入脚本中的 vehicle公共变量是否在Inspector中拖拽赋值。3. 确保车辆和地面的GameObject设置了正确的Layer,并在 VehicleBehaviour的Ground Layer Mask中包含了地面层级。 |
| 车辆下坠或穿透地面 | 1. 地面没有碰撞体(Collider)。 2. 车辆的碰撞体(Sphere/Box Collider)尺寸太小或位置不对。 3. Ground Check Distance设置过大,导致检测失败。 | 1. 为地面添加Mesh Collider或Terrain Collider。 2. 检查车辆碰撞体是否包裹住模型,在Builder中尝试调整碰撞体尺寸或改用Box模式。 3. 适当减小 Ground Check Distance,确保射线能碰到地面。 |
| 转向过于灵敏或迟钝 | Turn Speed参数设置不当,或未启用Turn Speed Adjust By Speed。 | 在VehicleSettings中调整Turn Speed。如果高速时难以控制,确保勾选了Turn Speed Adjust By Speed。也可以尝试调整Angular Drag(角阻力)来增加转向阻尼。 |
| 漂移没效果或效果过强 | Drift Amount参数设置不当。 | Drift Amount是归一化值。从0.3开始微调。同时检查输入是否正确触发了ControlDrift方法。 |
| 车辆在斜坡上侧滑 | 这是早期版本常见问题。 | 确保AVC版本在v1.4以上。在VehicleSettings中,找到并启用Stop Sideways Slope Slide(阻止侧向斜坡滑动)选项。 |
| 车轮视觉旋转不正确 | 车轮模型的轴心点(Pivot)不在几何中心。 | 使用AVC菜单中的AVC -> Fix Wheel Rotation工具。选中需要校正的车轮模型,运行此工具,它会创建一个轴心正确的子物体。 |
| 相机跟随抖动 | 相机更新与物理更新不同步。 | AVC在v1.5版本已修复此问题,确保将相机跟随的逻辑(如Cinemachine虚拟相机)的更新模式设置为与VehicleBehaviour一致(在FixedUpdate中更新目标位置)。如果使用自己的相机脚本,确保在LateUpdate或FixedUpdate中平滑跟随。 |
6.2 性能优化要点
AVC本身很高效,但在大量载具(如AI车流)或低端平台(如WebGL、移动端)上,仍需注意:
- 碰撞体选择:优先使用Box Collider模式。一个Box Collider比四个Sphere Collider的性能开销更小,物理模拟也更稳定。这是v1.5后官方推荐的方式。
- 地面检测优化:
Ground Check使用的是射线(Raycast)。确保Ground Layer Mask只包含必要的地面层级,避免射线打到不必要的物体上。在复杂场景中,可以考虑适当降低射线检测的频率(但需修改源码,需谨慎)。 - 特效与音频管理:如前所述,漂移烟雾、碰撞火花等瞬时特效必须使用对象池。对于持续播放的引擎声,使用一个或两个
AudioSource循环播放,通过调节音高和音量来模拟转速变化,而不是为不同转速准备多个音频片段。 - AI载具:如果你的游戏有大量AI控制的载具,确保它们在不被玩家看到或距离很远时,进入“低功耗”模式。例如,可以降低它们的物理更新频率、禁用昂贵的视觉特效和声音。AVC的
VehicleBehaviour本身没有提供这个开关,但你可以通过脚本来控制是否启用该组件,或者通过距离检测来动态调整其Update中的计算复杂度。 - Draw Call与GPU Instancing:如果你的场景有大量同款载具(比如同一款赛车),确保它们的材质启用了GPU Instancing,可以大幅降低Draw Call。
6.3 版本升级注意事项
从网络讨论和更新日志看,AVC在迭代中有些重大变更需要留意:
- v1.22版本的速度系数修正:如果你从v1.21或更早版本升级到v1.22+,所有载具的
Max Speed、Acceleration等速度相关参数可能需要手动调低(大约除以6),否则车辆会变得极快。这是修复了内部计算错误,使得速度设置更直观。 - v1.17版本的Rigidbody引用丢失:该版本重命名了
PhysicsSphere属性为VehicleRigidbody,可能导致升级后组件引用丢失。如果升级后车不动了,第一件事就是检查VehicleBehaviour上的Vehicle Rigidbody字段是否为空,重新拖拽赋值即可。 - v1.5版本的碰撞体模式变更:Prefab Builder默认强制使用Box Collider。如果你有旧项目依赖Sphere模式,可能需要手动调整或修改Builder的逻辑。
个人建议:在升级任何插件前,尤其是像AVC这样核心的系统,务必在备份的项目中进行测试。仔细阅读官方更新日志,重点关注“Fixed”(修复)和“Update”(更新)部分,看是否有破坏性变更。