和小伙伴们一起学Unity3D(五)让角色更鲜活——刚体
2013-08-26 18:00
357 查看
在现实生活中,我们无时无刻都在受着力的作用,小伙伴们推一下,我们会往前走一小段;想不开跳楼的时候我们会被重力摔的妈都不认识;脸被拳头打中的时候,身体会旋转180°然后倒地……因为我们生活在物理世界,会受力的作用做出相应的反映,那么在游戏世界里,为了实现这些现实的物理效果呢,Unity引入了刚体。
刚体是物体能够在物理控制下运动,通过接受力和扭曲,使物体能像现实世界一样运动,任何物体,想要受重力影响,受脚本施加的外力作用,或者与其他物体进行碰撞交互,都必须为它添加刚体组件。
下面博主以篮球在地面来回弹跳为例带大家认识刚体。
第一步:新建工程,创建一个Cube,拍扁拉长做个地面,再创建一个Sphere,摆一个帅气pose
第二步:选中小球,菜单栏Component——>Physics——>Rigidbody,这样就为小球添加了刚体组件
Mass:物体的质量,以卵击石基本就描述了这个参数的作用,在碰撞的时候,小质量的物体想撞飞大质量的物体,简直做梦
Drag:物体收到的阻力。对于接受过9年义务教育的人,不多说,你懂的。
Angular Drag:物体旋转的时候受到的阻力
Use Gravity:是否受到重力
Is Kinematic:是否使用动力学,打上勾以后,物体将不再受力、碰撞的影响,任何力作用在物体上,简直就是纹丝不动,包括重力。
Iterpolate:插值,当你发现刚体运动抖动时,可以尝试下面的选项
Collistion Detection:碰撞检测模式,用于避免高速运动的物体穿过其他物体时,却未发生碰撞,比如射击游戏的子弹常常需要它
Constraints:约束。
其中Freeze Position:冻结选中的轴(X,Y,Z轴),冻结了以后,在相应轴的移动将无效
其中Freeze Rotation:冻结选中的轴(X,Y,Z轴),冻结了以后,在相应轴的旋转将无效
第三步:新建C#脚本,将脚本添加到Sphere上
运行游戏,小球会像篮球一样上下弹
这里还需要说明的是,OnCollistionEnter函数是物体在发生碰撞的一瞬间调用,相应的还有OnCollistionStay是物体在碰撞后与物体接触时调用,OnCollistionExit是物体理考碰撞物时调用,大家可以分别测试一下,体会一下。参数Collistion是被碰撞的物体信息,球落下时,地板被碰撞,那么从collistionInfo便存贮着底板的相关信息,打印collistionInfo.gameObject.name为"Cube"
刚体还有许多常用的方法,这里博主就不一一举例了,希望大家查文档自己尝试一下。关于刚体的应用,我们会在后边的一个小游戏中巩固学习。
最后,献上本节短小的源码:http://download.csdn.net/detail/yy8245075/6014711
刚体是物体能够在物理控制下运动,通过接受力和扭曲,使物体能像现实世界一样运动,任何物体,想要受重力影响,受脚本施加的外力作用,或者与其他物体进行碰撞交互,都必须为它添加刚体组件。
下面博主以篮球在地面来回弹跳为例带大家认识刚体。
第一步:新建工程,创建一个Cube,拍扁拉长做个地面,再创建一个Sphere,摆一个帅气pose
第二步:选中小球,菜单栏Component——>Physics——>Rigidbody,这样就为小球添加了刚体组件
Mass:物体的质量,以卵击石基本就描述了这个参数的作用,在碰撞的时候,小质量的物体想撞飞大质量的物体,简直做梦
Drag:物体收到的阻力。对于接受过9年义务教育的人,不多说,你懂的。
Angular Drag:物体旋转的时候受到的阻力
Use Gravity:是否受到重力
Is Kinematic:是否使用动力学,打上勾以后,物体将不再受力、碰撞的影响,任何力作用在物体上,简直就是纹丝不动,包括重力。
Iterpolate:插值,当你发现刚体运动抖动时,可以尝试下面的选项
Collistion Detection:碰撞检测模式,用于避免高速运动的物体穿过其他物体时,却未发生碰撞,比如射击游戏的子弹常常需要它
Constraints:约束。
其中Freeze Position:冻结选中的轴(X,Y,Z轴),冻结了以后,在相应轴的移动将无效
其中Freeze Rotation:冻结选中的轴(X,Y,Z轴),冻结了以后,在相应轴的旋转将无效
第三步:新建C#脚本,将脚本添加到Sphere上
using UnityEngine; using System.Collections; public class RigidTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter(Collision collisionInfo) { //print(collisionInfo.gameObject.name); //为刚体添加力,方向向上,大小为200 rigidbody.AddForce(Vector3.up * 200); } }
运行游戏,小球会像篮球一样上下弹
这里还需要说明的是,OnCollistionEnter函数是物体在发生碰撞的一瞬间调用,相应的还有OnCollistionStay是物体在碰撞后与物体接触时调用,OnCollistionExit是物体理考碰撞物时调用,大家可以分别测试一下,体会一下。参数Collistion是被碰撞的物体信息,球落下时,地板被碰撞,那么从collistionInfo便存贮着底板的相关信息,打印collistionInfo.gameObject.name为"Cube"
刚体还有许多常用的方法,这里博主就不一一举例了,希望大家查文档自己尝试一下。关于刚体的应用,我们会在后边的一个小游戏中巩固学习。
最后,献上本节短小的源码:http://download.csdn.net/detail/yy8245075/6014711
相关文章推荐
- 我和我的小伙伴们一起学Unity3D(五)让角色更鲜活——刚体
- 和小伙伴们一起学Unity3D(四)角色移动之Transform
- 我和我的小伙伴们一起学Unity3D(四)角色移动之Transform
- 和小伙伴们一起学Unity3D(二)GUI
- 和小伙伴们一起学Unity3D(七)摄像机
- 和小伙伴们一起学Unity3D(一)
- 和小伙伴们一起学Unity3D(六)碰撞与触发器
- 和小伙伴们一起学Unity3D(八)材质和纹理
- 和小伙伴们一起学Unity3D(三)GUISkin 界面皮肤
- unity3d 给模型添加刚体后、或者角色控制器后下坠
- 我和小伙伴们一起学Unity3D(六)碰撞与触发器
- Unity3D 游戏引擎之角色控制器组件研究
- Unity3D研究之第一人称第三人称角色控制组件修改
- Unity3d中角色模型和角色名字保持相对位置
- Unity3D第一人称第三人称角色控制组件修改C#版
- Unity3D(3D游戏开发入门教程-38)Unity3D人物动画介绍,关键帧角色动画导入并切割
- Unity3D学习之刚体
- Unity3d 刚体
- cocos2d(CCSprite绑定不规则刚体与精灵一起移动)
- Unity3D角色阴影制作