码迷,mamicode.com
首页 > 其他好文 > 详细

【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠

时间:2014-07-17 20:14:06      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:unity   碰撞   睡眠   摩擦   物理材质   

碰撞与休眠


上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性。一旦刚体开始运动,那么系统方法便会监视刚体的碰撞状态。一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束。关于休眠可以理解成为让游戏对象变成静止状态。如果给某个游戏对象休眠的状态,那么这个物体将立马静止,不再运动。


碰撞

首先学习下碰撞几个重要的方法:

OnCollisionEnter(  ):刚体开始接触的时候,立即调用。

OnCollisionStay(  ):碰撞过程中,每帧都会调用此方法,直到撞击结束。

OnCollisionExit(  ):碰撞停止时,调用。


给代码(以下代码只是整个例子中的一部分,如果需要重建项目,我写完整个unity入门就上传所有的代码):

using UnityEngine;
using System.Collections;

public class CollisionTest : MonoBehaviour 
{

	//碰撞显示信息
	string show = null;
	void Start () 
	{
		//默认显示内容
		show = "未发生碰撞";
	}
	
	//进入碰撞
	void OnCollisionEnter(Collision collision)
	{
		show = "进入碰撞,碰撞名称:" + collision.gameObject.name;
	}
	//碰撞中
	void OnCollisionStay(Collision collision)
	{
		show = "碰撞中,碰撞名称:" + collision.gameObject.name;
	}	
	//碰撞结束
	void OnCollisionExit(Collision collision)
	{
		show = "碰撞结束,碰撞名称:" + collision.gameObject.name;
		//碰撞结束后让物体休眠
		collision.gameObject.rigidbody.Sleep();

	}
	
	void OnGUI()
	{
		//将碰撞信息显示出来
		GUI.Label(new Rect(100,0,300,40),show);
	}
}


bubuko.com,布布扣


碰撞器

游戏对象如果需要感应碰撞,那么就必须为其添加碰撞器。默认情况下,创建游戏对象时,会自动将碰撞器组件添加其中,而碰撞器组件决定了模型碰撞的方式。unity提供了5种碰撞器,分别是:box collider(盒子碰撞器),sphere collider(球体碰撞器),capsule collider(胶囊碰撞器),mesh collider(网格碰撞器),wheel collider(车轮碰撞器)。其中box collider(盒子碰撞器)适用与立方体对象之间的碰撞,sphere collider(球体碰撞器)适用于球体对象之间,capsule collider(胶囊碰撞器)适用于胶囊体对象之间,mesh collider(网格碰撞器)适用于自定义模型自身网格决定,wheel collider(车轮碰撞器)适用于车轮与地面或者其他对象之间的碰撞。



添加碰撞器

在导航菜单栏里选择component——physics然后选择种类。

bubuko.com,布布扣


物理材质

物理材质可设定物体的表面材质,不同的表面材质可影响碰撞后的物理效果。物理材质可添加任何碰撞器中。首先得导入物理材质的资源,可以选择导入系统提供的标准包。import——physic materials。在标准包中提供5种常用的材质:bouncy(弹性),ice(冰),metal(金属),rubber(橡胶),wood(木质)

bubuko.com,布布扣

如图,给球添加了弹性材质,那个球在下落的时候接触地面变会弹回去。

除了unity标准资源包里的5个物理材质,也可以自行创建物理材质。在project视图中点击create——physic material即可。如下图:

bubuko.com,布布扣bubuko.com,布布扣

dynamic friction:动态摩擦,取值在0到1之间,0最小,1最大。

static friction:静态摩擦,取值在0到1之间,0最小,1最大。

bounciness:碰撞反弹系数,取值在0到1之间,0最小,1最大。

friction combine:普通碰撞后的摩擦模式。

bounce combine:反弹碰撞后的摩擦模式。

friction direction 2:摩擦方向,方向分X轴,Y轴,Z轴。

dynamic friction 2:动摩擦系数,摩擦方向根据friction direction 2设定。

static friction 2:静摩擦系数,摩擦方向根据friction direction 2设定。


【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠,布布扣,bubuko.com

【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠

标签:unity   碰撞   睡眠   摩擦   物理材质   

原文地址:http://blog.csdn.net/u013289188/article/details/37728657

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!