Unity3D引擎与虚拟现实(VR)项目开发(微课版) 课件 第04章 物理引擎_第1页
Unity3D引擎与虚拟现实(VR)项目开发(微课版) 课件 第04章 物理引擎_第2页
Unity3D引擎与虚拟现实(VR)项目开发(微课版) 课件 第04章 物理引擎_第3页
Unity3D引擎与虚拟现实(VR)项目开发(微课版) 课件 第04章 物理引擎_第4页
Unity3D引擎与虚拟现实(VR)项目开发(微课版) 课件 第04章 物理引擎_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1页第4章物理引擎

第2页4.1 刚体4.1.1刚体特性1.刚体属性如果需要为游戏中的物体赋予真实的物理效果,就需要为其添加Rigidbody刚体组件,添加完成后可以在属性查看器面板中看到刚体组件的设置面板。第3页4.1 刚体(1)质量(Mass)该属性用来设定刚体的质量,如果将质量设置为1,那么只需要给这个物体一个向上的9.8N的力便可抵消重力。(2)阻力(Drag)Drag参数默认为0,即没有阻力,阻力的方向与物体运动方向相反,用来阻碍物体的运动。(3)旋转阻力(AngularDrag)旋转阻力的方向与物体的旋转方向相反用来阻碍物体的旋转运动,默认值为0.05。设置了旋转阻力大小之后,物体在任何方向上的旋转运动都将会受到影响。第4页4.1 刚体(4)使用重力(UseGravity)该属性用来设定是否需要在刚体上施加重力。用来模拟现实世界中的自由落体状态等等。(5)是否遵循运动学(IsKinematic)该属性用来设置刚体是否遵循牛顿的物理学运动定律。如果勾选它,则表示该物体将不会调用物理计算,只受脚本和动画的影响而运动,作用力、关节和碰撞都不会对其产生任何作用。(6)插值(Interpolate)插值是获取近似当前渲染时间点数据的一种手段第5页4.1 刚体(7)碰撞检测(CollisionDetection)刚体组件默认使用占用资源较少的离散模式(Disctete),一般用于静止或运动速度较慢的物体,而对于高速运动或体积较小的物体建议使用连续模式(Continuous),被使用了连续检测模式的物体所撞击的物体,则应该使用动态连续模式(ContinuousDynamic)。(8)限制条件(Constraints)限制条件用来设置物体在哪一个方向上运动或旋转将受到的限制。默认情况下,物体的运动和旋转在各个方向上都不会受到限制。第6页4.2碰撞器4.2.1碰撞器的添加1.基础知识Unity中内置了六种碰撞器,分别是盒子碰撞器、球体碰撞器、胶囊碰撞器、网格碰撞器、车轮碰撞器以及地形碰撞器。因为Unity并未限制同一物体上挂载碰撞器的数量,若碰上不规则物体读者可以将这几种碰撞器组合使用。第7页4.2碰撞器4.2.1碰撞器的添加1.基础知识(1)盒子碰撞器(BoxCollider)盒子碰撞器是一种基本方形碰撞器的原型,可以调整成不同大小的长方体。(2)球体碰撞器(SphereCollider)球体碰撞器是一种基本球形碰撞器的原型,在三维方向均可以调整大小但是不能单独调整某一维。第8页4.2碰撞器4.2.1碰撞器的添加1.基础知识(3)胶囊碰撞器(CapsuleCollider)胶囊碰撞器是类似胶囊形状的碰撞器,由一个圆柱体和两个上下的半球组成。(4)网格碰撞器(MeshCollider)网格碰撞器是一种在物体网格资源上构建的碰撞器,用于对复杂网状模型物体的检测。第9页4.2碰撞器4.2.1碰撞器的添加1.基础知识(5)车轮碰撞器(WheelCollider)车轮碰撞器是一种特殊的碰撞器,该碰撞器包含碰撞检测、车轮物理引擎和基于滑动的轮胎摩擦模型(6)地形碰撞器(TerrainCollider)地形碰撞器是主要作用于地形的碰撞器。用于检测地形和地形上物体对象的碰撞,防止地形上加有刚体属性的物体无限制下落。第10页4.2碰撞器4.2.1碰撞器的添加1.基础知识

碰撞器的参数列表

参数名含义参数名含义IsTrigger如果启用,此碰撞体(Collider)则用于触发事件,会由物理引擎忽略。Material引用可确定此碰撞体与其他碰撞体(Collider)的交互方式的物理材质。Size碰撞器在xyz轴上的尺寸content碰撞器在本地对象的位置Radius球体碰撞器的半径大小Height胶囊碰撞器圆柱体的高度第11页4.2碰撞器4.2.1碰撞器的添加2.案例效果第12页4.2碰撞器4.2.1碰撞器的添加3.开发流程(1)打开Unity集成开发环境,在Assets目录下新建一名为Texture的文件夹,并将Diban.jpg和bg01.jpg导入该文件夹,分别作为地板和胶囊的纹理图。点击GameObject→3DObject→Plane菜单创建一个地板,赋上纹理图。(2)再次点击GameObject→3DObject→Capsule菜单创建胶囊游戏对象,为其赋上纹理图并调整该胶囊和地板的距离使其在地板上方。选中Capsule游戏对象,为其添加刚体组件。选择CapsuleCollider组建右侧的设置按钮,选择RemoveComponent菜单,移除该组件。如图4-25所示。第13页4.2碰撞器4.2.1碰撞器的添加3.开发流程(3)此时的胶囊游戏对象没有碰撞器。选中Capsule游戏对象,点击Component→Physics→BoxCollider,如图4-26所示。胶囊属性列表中增加了BoxCollider组件,点击BoxCollider的编辑按钮,其每个面中心都会出现一个点,调整其尺寸包裹住半个胶囊对象。如图4-27所示。第14页4.2碰撞器4.2.1碰撞器的添加3.开发流程(4)按照上述步骤再次为胶囊添加SphereCollider碰撞器组件,在Center参数列表中调整其位置,将Y值调整为0.4,并且点击编辑按钮调整其半径大小,也可以在Radius参数中调整该碰撞器组件的半径的大小。如图4-28所示。(5)点击播放按钮运行该案例,观察到胶囊会从空中掉下来但并不会穿过Plane落到下面去,这是刚体和碰撞器结合而产生的效果。第15页4.3触发器触发是一种特殊的碰撞状态,当A模型与B模型发生碰撞时,

A模型可以进入B模型的内部时,称谓触发。区域注意:要想使触发生效,必须将被触发模型的碰撞盒的IsTrigger选项打勾。第16页4.4 物理引擎相关方法(1)OnCollisionEnter方法(其中一个模型必须是刚体)其作用是当两个物体发生碰撞时,即调用该方法:privatevoidOnCollisionEnter(Collisioncollision){Destroy(collision.gameObject);}(2)OnCollisionExit方法其作用是当两个已经发生碰撞的物体相互脱离碰撞状态时调用该方法:第17页4.4 物理引擎相关方法(3)OnTriggerEnter方法(其中一个模型必须是刚体)其作用是当两个物体发生触发时(即可以进入对方的内部),即调用该方法:privatevoidOnTriggerEnter(Colliderother){if(other.gameO=="hero")

{Instantiate(bz,newVector3(30,0,12),Quaternion.identity);

}}(4)OnTriggerExit方法其作用是当两个已经发生触发的物体相互脱离触发状态时调用该方法.(5)

OnTriggerStay方法第18页4.4 作业(1)创建第一个场景:先创建一个面积是初始面板25倍的红色地面(可以将它作为预制体方便其他场景使用),上面放置一个蓝色cube,通过WASD键,可以使cube分别向前后左右移动,点击鼠标左键,可以使cube沿着Y轴顺时针旋转,点击鼠标右键则可以使cube沿着Y轴逆

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论