(由于问题不好描述,所以标题就比较长了)
之前在做游戏时,发生角色与其他模型始终不能正常碰撞,总是会穿插,即角色穿过其他模型。其中角色有刚体和碰撞器组件,其他模型“有”碰撞器。
事后发现错误在于,其他模型的碰撞器组件被加到“组”上,而非组内每个物体中。
例如,一个客厅场景,有桌子、电视、墙壁,将3者打组成为一个组,命名“Environment”,再给Environment加个碰撞体组件。这样了,就会出现问题。正确的做法是,给Environment组内的每个物体(桌子、电视、墙壁)都加上碰撞体组件。
PS:别忘了运动的角色模型需要加刚体和碰撞体。
两个对象都有Collider组件且至少一个有Rigidbody组件;
其中至少一个物体(必须运动的)必须带有碰撞器(collider)+刚体(Rigidbody),另一个物体(可以静止也可以运动)也必须至少带有collider;
Unity 3D 中的 Rigidbody
可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。
我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体。
刚体(Rigidbody
)是物理引擎中最基本的组件。通过该组件可以给物体添加一些常见的物理属性,如质量、摩擦力、碰撞参数等。
Unity 3D 提供了多个实现接口,开发者可以通过更改这些参数来控制物体的各种物理状态。
刚体在各种物理状态影响下运动,刚体的属性包含:
- Mass(质量)
- Drag(阻力)
- Angular Drag(角阻力)
- Use Gravity(是否使用重力)
- Is Kinematic(是否受物理影响)
- Collision Detection(碰撞检测)
刚体添加方法
在 Unity 3D 中创建并选择一个游戏对象,执行菜单栏中的 Component
→ Physics
→ Rigidbody
命令为游戏对象添加刚体组件。