U3D外包Unity最新版本的官方技术文档
Posted on 2024-01-24 23:13 WPF外包团队 — 长年承接WPF项目外包与WP8应用外包 阅读(22) 评论(0) 编辑 收藏 举报Unity 5.0 已升级到 PhysX3.3 SDK。在对 4.x 项目采取任何操作之前,请快速查看此博文。
关于更新的概述
Unity 5.0 物理系统的预计工作速度是以前版本的 2 倍。以前熟悉的大多数组件仍然存在,它们的工作方式也和以前一样。当然,有些行为不可能相同,而有些则是由于预先存在的代码库的限制而引起的奇怪行为,所以不得不进行改变。变化最明显的两个方面是 Cloth 组件和 WheelCollider 组件。我们在下面会分别介绍这两个方面。另外,整体的物理代码也有一些较小的变化会导致不兼容。
可能影响项目的更改:
现在默认情况下关闭自适应作用力 (Adaptive Force)
引入自适应作用力是为了方便模拟大型堆栈,但事实证明它只适合用于演示。在真实游戏中,可能会导致错误的行为。可以在 Editor 物理属性中将其打开:Edit > Project settings > Physics > Enable adaptive force。
从地形和网格中均移除了平滑球体碰撞。
PhysX3 具有能够解决相同问题的功能,并且不再可切换,因为此功能被认为是没有重大缺陷的解决方案。
在使用 PhysX3 时弹簧表现出更大的幅度。
可能需要在升级后调整弹簧参数。
地形物理材质的设置已更改
请使用 TerrainCollider.sharedMaterial 和 TerrainCollider.material 指定地形的物理材质。通过 TerrainData 设置物理材质的旧方法将不再有效。好处是现在可以基于每个碰撞体指定地形物理材质。
形状投射和扫描已更改:
- 形状扫描会报告命中的所有形状(即 CapsuleCast 和 SphereCast 将返回命中的所有形状,甚至是完全包含原始图元的形状)
- 射线投射会过滤掉包含射线投射原点的形状
复合碰撞体事件:
使用复合碰撞体时,现在每个触点对都调用一次 OnCollisionEnter
触发器必须为凸面:
从现在开始,只能在凸面形状上使用触发器(PhysX 限制):
- TerrainCollider 不再支持 IsTrigger 标志
- MeshCollider 只有为凸面时才能有 IsTrigger
动态物体必须为凸面:
动态物体(即已连接刚体且 Kinematic = false 的物体)不再具有凹面网格物体碰撞体(PhysX 限制)。
如果要与凹面网格进行碰撞,则只能将它们放在静态碰撞体和运动物体上
布娃娃关节:
布娃娃的关节设置可能需要调整。
以下建议也适用于一般关节。
-
避免将“Angular Y Limit”和“Angular Z Limit”设置为较小的角度。根据具体设置,为了保持稳定,最小角度应在 5 到 15 度左右。尝试将角度设置为零,而不是使用小角度。这样会锁定轴并提供稳定的模拟。
-
将“Enable Preprocessing”为 false(取消选中)。禁用预处理有助于防止关节“破裂”。如果关节被强制进入无法满足关节约束条件的情况,关节可能“破裂”。如果通过关节连接的刚体被静态碰撞几何体拉开(例如,在墙内不完整生成布娃娃),则会发生这种情况。
-
布娃娃稳定性或拉伸:如果布娃娃处于极端情况下(例如在墙内不完整生成布娃娃或用大力推动布娃娃),关节解算器将无法使刚体保持在一起。这种情况下可能导致拉伸或“身体部位散乱”。请使用“ConfigurableJoint.projectionMode”或“CharacterJoint.enableProjection”在关节上启用投影。
-
如果与关节连接的刚体抖动,请尝试增加 Edit > Project Settings > Physics >“Solver Iteration Count”值。尝试使用 10 到 20 之间的值。
-
在运动刚体由关节连接到其他刚体情况下,切勿使用直接变换访问。这样做会跳过 PhysX 计算相应刚体的内部速度的步骤,导致解算器提供不良结果。我们看到过一些 2D 项目使用直接变换访问通过在骨架的根节点上更改 transform.direction 来翻转角色。如果改用 MovePosition/MoveRotation/Move,那么此行为会改善很多。
-
U3D(Unity3D)是一款流行的跨平台游戏开发引擎,用于创建2D和3D游戏以及交互性应用程序。