unity native2D教程第四课:2D刚体和碰撞体介绍
在这节课中,我们将详细介绍2D刚体和碰撞体,首先来看Rigidbody 2D刚体的属性。
2D刚体属性
1. Mass(质量)
Mass的值为0时代表着无限大,此时刚体为“静态刚体”。其取值范围是0.001到100000。
2. Linear Drag(线性阻尼)
线性阻尼表示物体在运动过程中受到的阻力。
3. Angular Drag(角度阻尼系数)
角度阻尼系数是指刚体在旋转过程中受到的阻力。
4. Gravity Scale(重力缩放)
重力缩放用于控制重力的大小,其数值范围为 -100000到100000。
5. Fixed Angle(固定角度)
固定角度意味着刚体在运动过程中保持固定的角度,相当于关闭了刚体的旋转功能。
6. Is Kinematic(运动学开关)
该属性控制刚体是否变为运动学物体。当开启此属性时,刚体将不受物理引擎的控制,而是受Transform或者动画等的控制。
7. Sleeping Mode(睡眠模式)
Unity会临时把处于静止状态的物理模拟去除,以此节省计算资源。具体有以下几种模式:
- Never Sleep:永远不睡眠。
- Start Awake:初始处于唤醒状态,之后可能进入睡眠。
- Start Asleep:立即进入睡眠。
8. Collision Detection(碰撞检测)
- Discrete:正常状态下的检测。
- Continuous:连续性检测。
2D碰撞器
我们可以为游戏的前景添加碰撞体。例如,添加碰撞体后,场景中会出现黄色框,该黄色框代表碰撞体的碰撞范围。
Unity 2D中的碰撞体和3D的有相似之处,但也有不同。在Unity 2D中,常见的碰撞体有:
- Box Collider2D(盒子碰撞器)
- Circle Collider2D(圆形碰撞器)
- Edge Collider2D(边缘碰撞器)
- Polygon Collider2D(多边形碰撞器)
其中,Edge Collider2D和Polygon Collider2D是3D项目中没有的。(注:这里的解释可能有些生硬,大家自己添加实践一下就容易理解了。)
下面以UFO飞船为例,介绍Polygon Collider2D。给UFO添加Polygon Collider2D后,多边形碰撞器有一个特殊功能,即可以编辑其外形。具体操作如下:
- 按住Shift键的同时,在多边形上拖动可出现一个顶点,拖动此顶点可以改变碰撞器的外形。
- 按住Ctrl键的同时,单击顶点,可以删除该顶点。
刚体属性的其他介绍
1. Material(材质)
Material用于定义刚体表面的一些物理特性,如摩擦力、柔软程度等,这些特性决定了刚体对其他物体的反弹能力等。
2. Is Trigger(触发开关)
熟悉3D碰撞的开发者应该了解这个属性的作用。勾选该属性会产生刚体碰撞;不勾选则为触发碰撞,此时碰撞的两个物体之间可以不使用刚体进行驱动。
对于Unity 2D,我们可以简单理解为它是3D物理工具在x、y轴方向的计算,省略了z轴的计算。
刚体和碰撞器的碰撞及触发关系
下面通过一张表来介绍不同类型的刚体和碰撞器,以及它们之间的碰撞及触发关系。
静态碰撞器
静态碰撞器指仅使用了碰撞器组件的碰撞刚体,例如UFO物体。
RigidBody
RigidBody指使用了刚体组件以及碰撞器的刚体物体。
表的上半部分展示了使用不同组件类型的物体之间的碰撞检测以及信息传递;表的下半部分则展示了这些不同类型物体之间的触发碰撞关系以及信息传递。在第三列中,有Kinematic Rigidbody Collider,它指的是打开Is Kinematic选项并且使用了Collider组件的刚体物体。该物体与横列中Rigidbody Collider物体(使用了Rigidbody和Collider组件的物体)之间会发生碰撞,用“Y”表示它们之间发生碰撞并且会进行信息传递;而它与静态刚体之间则不会发生碰撞及信息传递。