Unity3D中Rigidbody(刚体)组件可使游戏对象在物理系统的控制下运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA 物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。
为游戏对象添加Rigidbody(刚体)组件,实现该对象在场景中的物理交互。当游戏对象添加了Rigidbody组件后,游戏对象便可以像真实世界中受到力的效果,如重力、阻力、质量等,任何游戏对象只有在添加Rigidbody组件后才会受到重力影响。接下来介绍如何为游戏对象添加刚体组件。
(1)新建工程RigidBodyDemo,新建一个场景“RigidBody”,在场景中创建一个Sphere,一个Plane,让Plane显示在Sphere的下方,作为Sphere跌落的地面,并给它们赋予纹理图,如图6-1 所示。运行程序,场景没有任何的变化。
图6-1 创建场景
图6-2 添加刚体组件
(2)为Sphere添加刚体。在场景中选中Sphere,在Inspector视图中单击“Add Component”按钮,在弹出的菜单中选择“Physics”→“Rigid Body”,便为Sphere添加了刚体组件,如图6-2所示,其属性如表6-1所示。这时Sphere便有了重力,点击运行按钮,可以看到Sphere跌落的效果(如果不增加Plane,Sphere会一直往下跌落,有兴趣的可以自行尝试)。
表6-1 刚体属性列表
(www.xing528.com)
(3)一个球如果弹到地上应该会自然地往上弹,反复数次后才会静止在地面上。也就是说,这个球不但应该具有重力,还应该具有弹力。Project视图中右击,选择“Import Package”→“Characters”,导入角色资源包,找到“Standard Assets”→“PhysicsMaterials”→“Bouncy”,如图6-3所示,将Bouncy直接托给场景中的Sphere游戏对象上,Sphere增加了一个弹力的物理材质。这时候运行程序,会发现球接触地面后会反弹。
图6-3 导入的资源包
图6-4 冻结旋转
(4)可以通过获取刚体组件来控制物体的运动。在场景中添加Cube 游戏对象,给Cube添加刚体组件,新建一个脚本“RigidBodyMove”,挂载给Cube,代码如下:
(5)运行程序,当力太大的时候发现Cube 发生翻滚,这时候锁定刚体旋转的X、Y、Z,如图6-4 所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。