碰撞体形状
本课属于 Coddy Unity 学习旅程的“物理与游戏玩法”单元。第 13 课,共 71 课。
物理系统不会读取你看到的网格,而是使用对象的碰撞体,而且碰撞体可以简单得多。Unity 的三种基本形状能满足大多数需求。BoxCollider(size、center)适用于箱子、墙壁、地板和建筑物。SphereCollider(radius)适用于球体;它是测试成本最低的形状,而且摩擦力使球转动时,球会滚动。CapsuleCollider(radius、height、direction)是两端圆滑的圆柱体,其高度包含两端。
胶囊体是角色通常使用的形状。它圆滑的底部可以越过小台阶和地砖之间的接缝,而盒子的角会卡在这些地方;它的侧面会从角落滑开,而不会被卡住。带有 Rigidbody 的胶囊体会像瓶子一样倾倒,所以角色的 Rigidbody 会冻结旋转(rb.freezeRotation = true),并由代码转动角色本身。
每种基本图形都有对应的碰撞体:Cube 对应 BoxCollider,Sphere 对应 SphereCollider,Capsule 对应 CapsuleCollider。Unity 没有圆柱体碰撞体,因此 Cylinder 基本图形会使用两端圆滑的 CapsuleCollider。MeshCollider 会贴合导入模型自身的三角形:适合用于不会移动的精细场景物体,但测试速度较慢;如果它附加在会移动的 Rigidbody 上,就必须标记为 Convex。对于会移动的复杂对象,在其子对象上使用几个简单碰撞体,比使用一个网格碰撞体更快。
亲手试试
这节课没有代码挑战。
物理与游戏玩法中的所有课
自己练习: Unity 在线编辑器