【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠
碰撞与休眠
上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性。一旦刚体開始运动,那么系统方法便会监视刚体的碰撞状态。一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束。关于休眠能够理解成为让游戏对象变成精巧状态。假设给某个游戏对象休眠的状态,那么这个物体将立刻精巧,不再运动。
碰撞
首先学习下碰撞几个重要的方法:
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);
}
}
碰撞器
游戏对象假设须要感应碰撞,那么就必须为其加入碰撞器。默认情况下,创建游戏对象时,会自己主动将碰撞器组件加入当中,而碰撞器组件决定了模型碰撞的方式。unity提供了5种碰撞器,各自是:box collider(盒子碰撞器),sphere collider(球体碰撞器),capsule collider(胶囊碰撞器),mesh collider(网格碰撞器),wheel collider(车轮碰撞器)。当中box collider(盒子碰撞器)适用与立方体对象之间的碰撞,sphere collider(球体碰撞器)适用于球体对象之间,capsule
collider(胶囊碰撞器)适用于胶囊体对象之间,mesh collider(网格碰撞器)适用于自己定义模型自身网格决定,wheel collider(车轮碰撞器)适用于车轮与地面或者其它对象之间的碰撞。
加入碰撞器
在导航菜单条里选择component——physics然后选择种类。
物理材质
物理材质可设定物体的表面材质,不同的表面材质可影响碰撞后的物理效果。物理材质可加入不论什么碰撞器中。首先得导入物理材质的资源,能够选择导入系统提供的标准包。import——physic materials。在标准包中提供5种经常使用的材质:bouncy(弹性),ice(冰),metal(金属),rubber(橡胶),wood(木质)
如图,给球加入了弹性材质,那个球在下落的时候接触地面变会弹回去。
除了unity标准资源包里的5个物理材质,也能够自行创建物理材质。在project视图中点击create——physic material就可以。例如以下图:
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】学习笔记三十七:物理引擎——碰撞与休眠的更多相关文章
- Unity 3D学习笔记(三)——关于脚本
在脚本中定义的类成员,如果是公共的话,在脚本与游戏对象绑定之后,是可以在Inspector中编辑的,例如下面这个脚本: using UnityEngine; using System.Collecti ...
- unity 3D 学习笔记
1.父对象的初始位置设,即刚开始的空对象的根节点位置应当设置成(0,0,0) 这样设置可以避免以后出现奇怪的坐标. GameObject实际上就是一些组件的容器. unity 使用公用变量原因是,在U ...
- PHP学习笔记三十七【http】
<?php print_r($_SERVER); //$_SERVER预编译变量[数组]输出请求报文,注意大小写 echo "<br/>"; foreach($_ ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
随机推荐
- 关于WEB三层架构的思考
1.MVC设计思想 MVC程序设计思想是眼下比較流行的WEB开发的模式,当中,M(model)是模型.即JavaBean,用来封装和保存数据:V(view)是视图,即JSP.用来显示内容:C(cont ...
- 数据库元数据MetaData
本篇介绍数据库方面的元数据(MetaData)的有关知识.元数据在建立框架和架构方面是特别重要的知识,再下一篇我们仿造开源数据库工具类DbUtils就要使用数据库的元数据来创建自定义JDBC框架. 在 ...
- memset,memcpy,memmove,strcpy,strcat,strcmp的实现(其实很简单,每个程序都只有几行代码)
面试中的几个小问题 1.对stl中list封装(参考1): 2.对重要C函数实现(参考2): //memset void *memset(void *buffer, int c, int count) ...
- PHP学习之-1.4 计算表达式
计算表达式 不同于HTML和CSS,在PHP中做计算,比如我们写 echo 12*3 计算结果是36.代码如下 <?php echo 12*3;?> 实例 <!DOCTYPE HTM ...
- Javascript做模糊查询
<html> <head> <title>Javascript模糊查找</title> </head> <body> <l ...
- 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常
在综合统计SDK(欧盟统计局的朋友,百度统计)之后.有一个非常有利的功能测试:错误分析.此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品.多功 ...
- uva 12627
题意:开始有1个红气球,每小时后1个红气球会变为3个红气球和1个蓝气球,问k小时后第A行到第B行的气球数. 解:用g(k,i)表示第k小时时,从底部数i行的红气球数.所以ans = g(k,2^k-A ...
- MongoDB学习笔记(五) MongoDB文件存取操作
由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结 ...
- Extract Datasets
*&---------------------------------------------------------------------* *& Report ZTEST2013 ...
- alv 列标题
gs_fieldcat-reptext_ddic才是显示列标题的