现实世界中的物体都受到力的作用,所以才会有多姿多彩的生活。那么在游戏中又如何让游戏对象也受到力的作用呢,游戏中物体受到力的作用,更多地是现象的模拟,而不是真的受到力的作用。通俗一点,就是让你感觉好像真的受到了力,而实际是只不过是一堆代码的执行而已。unity3d如何让物体能受到力的作用呢?下面简单介绍一下。
-
启动unity3d游戏引擎。这里我就随便启动一个之前的项目了。
-
随便建立一个物体。这里我就建立了一个立方体。
-
然后再检视窗口,为选择的立方体添加一个组件,单击add componet。
-
在弹出的窗口中,单击physics;弹出新的窗口,单击rigidbody(刚体)。
-
这时所选择的立方体就有了刚体组件。添加了这个组件的游戏对象可以接受外力和扭矩力,并且像真实的物体一样接受摩擦力和重力,还可以与其他物体发生相互碰撞。
-
刚体组件的具体参数。
-
- Mass(质量):
学过物理的同学们都知道的吧,质量越大,惯性越大。这里的单位可以自己统一规定,但是官方给出的建议是场景中的物体质量最好不要相差100倍率以上。估计是防止两个质量相差太大的物体碰撞后会产生过大的速度,从而影响游戏性能吧。 - Drag(阻力):这里指的是空气阻力,当游戏物体收到某个作用力的时候,这个值越大越难移动。如果设置成无限的话,物体会立即停止移动。
- Angular Drag(角阻力):
同样指的是空气阻力,只不过是用来阻碍物体旋转的。如果设置成无限的话,物体会立即停止旋转。 - Use Gravity(使用重力):
勾选了这个项,游戏对象就会受到重力影响。 - Is Kinematic(是否动态):
勾选这个选项会使游戏对象不受物理引擎的影响,但这不等同于没有刚体组件。这通常用于需要用动画控制的刚体,这样就不会因为惯性而影响动画了。 - Interplate(差值类型):如果看到刚体移动的时候一直抽风或者运动的不是很平滑,可以选择一种平滑方式:
None(无差值):不使用差值平滑。
Interpolate(差值):根据上一帧来平滑移动。
Extrapolate(推算):根据推算下一帧物体的位置来平滑移动。 - Collision Detection(碰撞检测方式):
Discrete(离散):默认的碰撞检测方式。但若当物体A运动很快的时候,有可能前一帧还在B物体的前面,后一帧就在B物体后面了,这种情况下不会触发碰撞事件,所以如果需要检测这种情况,那就必须使用后两种检测方式。
Continuous(连续):这种方式可以与有静态网格碰撞器的游戏对象进行碰撞检测。
Continuous Dynamic(动态连续):这种方式可以与所有设置了2或3方式的游戏对象进行碰撞检测。 - Freeze Position/Rotation(冻结位置/旋转):
可以对物体在X、Y、Z三个轴上的位置/旋转进行锁定,即使受到相应的力也不会改变,但可以通过脚本来修改。
- Mass(质量):
-
-