我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>行业>新闻动态>公司动态

一起学Unity3D:让角色更鲜活——刚体

文章来源:网络 作者:bonnie 发布时间:2013年08月28日 点击数: 字号:

在现实生活中,我们无时无刻都在受着力的作用,小伙伴们推一下,我们会往前走一小段;想不开跳楼的时候我们会被重力摔的妈都不认识;脸被拳头打中的时候,身体会旋转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上

[csharp] view plaincopyprint?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);
}
}
[csharp] view plaincopyprint?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);
}
}

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"

>>相关产品

  • 立体显示器
  • 立体投影系统
  • 立体拍摄系统
  • 数字头盔/头戴式显示器
  • 立体视频眼镜
  • 液晶快门立体眼镜
  • 手持式立体双目镜
  • 数据手套
  • 3D输入设备
  • 多点触控系统
  • 立体投影系统
  • 动作捕捉系统
  • 位置追踪器
  • 眼动仪
  • 力反馈设备
  • 3D扫描器
  • 3D打印机
  • 虚拟现实软件
    • 暂无资料
    • 暂无资料
    • 暂无资料
    • 暂无资料
    • 暂无资料