版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Unity3D中物理系统的核心概念目录什么是物理系统刚体(Rigidbody)碰撞器(Collider)关节(Joints)角色控制器(CharacterController)布料(Cloth)什么是物理系统什么是物理系统经典牛顿力学是游戏引擎对物理法则的第一个重要简化假设。到目前为止,大多数的游戏引擎只关注经典动力学中的经典刚体动力学。刚体(Rigidbody)什么是刚体在虚拟的游戏世界中,通常我们所模拟的物体对象是完美的固体,不会变形(液体和气体是经典的反例)。换句话来说,物体的形状是固定不变的,这种假设可以很好的配合碰撞检测系统,从而大幅简化模拟固体动力学所需要的数学计算。什么是刚体什么是刚体碰撞器碰撞器如果希望两个对象发生碰撞,那么这两个对象上都必须有Collider组件,其中一个对象上必须有Rigidbody组件。那么何为Collider组件呢?碰撞器定义了场景中物体发生物理碰撞时的外部受力形状。碰撞器是不可见的,它不需要跟物体表面的mesh网格完全一致。为了提升游戏或应用的运行效率,碰撞器只需要做到跟mesh网格大致相似就好,这样既可以保证运行效率,也可以保证物体的可辨识性。不同类型的碰撞器1.基础Collider组件通过基础Collider组件可以定义物体用于碰撞的基本形状,通常包括:(1)BoxCollider:立方体状的Collider,Cube对象默认关联该Collider;(2)CapsuleCollider:胶囊状的Collider,Capsule对象默认关联该Collider;(3)SphereCollider:球体状的Collider,Sphere对象默认关联该Collider;不同类型的碰撞器2.复合碰撞器(Compoundcollider):复合形状的碰撞器又叫复合碰撞器,有时候最基本的形状无法精确覆盖物体,就需要考虑使用基础形状的组合,或是在子对象上添加更多的碰撞器。但是需要注意的是,在使用复合碰撞器的时候,我们只能使用单个刚体组件,而且通常关联在Hierarchy视图的根对象上。除此之外,Unity3D还提供了用于特定场合的轮状碰撞器(WheelCollider)和地形碰撞器(TerrainCollider)。其中WheelCollider可以用于带轮子的交通工具。不同类型的碰撞器3.网格碰撞器(MeshCollider):有些时候,即便是复合碰撞器仍然不够精确。此时,我们可以考虑使用网格碰撞器来精确匹配游戏对象的网格。当然,凡事有利有弊。当使用了网格碰撞器之后,虽然碰撞的精度会很高,但是会消耗大量的运算性能。此外,网格碰撞器不能和另外的网格碰撞器发生碰撞。此时,我们需要在Inspector视图中将该网格碰撞器标记为Convex。不同类型的碰撞器4.静态碰撞器(Staticcollider):我们可以为场景中类似地板、天花板和其它保持静止不动的物体对象添加静态碰撞器,同时不需要为它们添加刚体组件。之所以如此,是因为这些静止物体无需在力的作用下发生位移或形变。与staticcollider相反,dynamiccollider(动态碰撞器)指的是某个物体对象既有collider组件,也有刚体组件。不同类型的碰撞器5.物理材质(Physicsmaterial):当关联了碰撞器的物体发生接触时,物体的表面需要模拟出应有的物理特性。举例而言,当一片雪花落到某个物体上的时候,应该表现出它应有的轻柔顺滑的物理特性。而当某个粗重的橡胶球撞到某个物体的时候,应该呈现出足够的弹性和摩擦力。虽然我们无法通过collider的形状设置这些特性,但却可以通过PhysicsMaterial(物理材质)进行设置。不同类型的碰撞器6.触发器(Trigger):Trigger和Collider类似,但是各自的应用场景不同。Trigger只代表发生该事件后会触发一系列的操作,但是不一定模拟出物理碰撞的效果。而Collider则不仅仅会触发物理碰撞事件,也会模拟出物理碰撞的效果。关节关节在虚拟的数字世界中,有时候我们需要将某个刚体对象和另外一个刚体对象通过某种方式固定在一起。当受到外力的作用时,固定在一起的刚体对象将通过模拟计算得到最终的运动轨迹。此时,我们需要借助Joint(关节)。通过关节,我们可以对刚体对象施加力,从而形成物体的运动。同时,关节还可以限制物体的运动,使其更符合现实世界的物理规律。关节关节让刚体组件拥有以下的运动自由度。角色控制器角色控制器虚拟数字世界中的角色需要实现一些基于碰撞的物理机制,比如他们不应该穿透地板,或是穿越墙壁。与此同时,角色的运动并非完全符合物理特性,只有这样才能更方便的控制角色的各种运动。对此,Unity3D提供了一种特殊的组件来快速实现这些功能,这就是CharacterController(角色控制器)。角色控制器给角色提供了简单的胶囊状的碰撞器,并且方向始终向上。但是和其它碰撞器不同的是,角色控制器无需刚体组件,其动能效应也不是完全仿真的。布料布料组件和SkinnedMeshRenderer共同作用,通常用于模拟角色服饰的表面。模仿天体之间的万有引力王寒目录案例分析案例实施案例分析案例分析在这个实战案例之中,我们将模拟天体之间的万有引力。我们将在场景中放置两个天体,它们在受到彼此之间万有引力作用的情况下,会相互吸引,直到碰撞到一起。案例实施开始前的准备1.创建一个新的项目,将其命名为PlanetGravity。2.导入项目所需的资源接下来我们需要从AssetStore中下载并导入项目所需的各种资源。(1) 导入天空盒资源首先我们需要一个银河系的星空作为背景。为此,打开AssetStore,搜索DynamicSpaceBackgroundLite开始前的准备(2) 导入星球材质资源在AssetStore中搜索PlanetShaderandShadowingSystem开始前的准备导入资源后可能会出现红色错误提示,删除以下文件即可:1.\SampleScenes\Scripts\LevelReset.cs2.\SampleScenes\Menu\Scripts\SceneAndURLLoader.cs创建新场景在编辑器菜单中选择File-NewScene,或使用快捷键Ctrl+N创建一个新的场景,然后使用快捷键Ctrl+S保存,将其更名为MainScene创建并设置自定义天空盒首先在Project视图中右键单击,选择Create-Material,从而新创建一个材质,将其命名为MySky。双击对其属性进行编辑,从Shader属性的下拉列表中选择Skybox/Panoramic,其它均保持默认设置。在Spherical(HDR)处点击select,选择NebulaBlue接着从顶部的主菜单中选择Window-Rendering-LightingSettings,然后将SkyboxMaterial设置为MySky创建并设置自定义天空盒在场景中添加星球物体从Project视图中找到Assets-PlanetShader-Prefab-Planet,然后将AlienPlanet和Earth拖动到场景中设置场景-Earth首先设置Earth对象的属性。在Inspector视图中,将Transform组建的Scale属性调整为:X-20,Y-20,Z-20。并适当调整其位置接着点击AddComponent,添加一个Rigidbody刚体组件,并取消勾选UseGravity。因为Earth对象本身就是地球,它处在太空之中。将Mass设置为10000.点击工具栏上的运行按钮,可以看到场景中的地球在缓缓的自转。地球自转的效果是由Planet这个脚本文件实现的,因为不是这个案例要重点示范的内容,大家感兴趣的话可以自己研究其中的细节设置场景-AlienPlanetAlienPlanet是我们假想的一个天空中的陌生星体。在Inspector视图中,将Transform组建的Scale属性调整为:X-15,Y-15,Z-15。接着点击AddComponent,添加一个Rigidbody刚体组件,并取消勾选UseGravity。将Mass质量设置为5000。设置场景-添加平行光此时我们看到两个星体都是黑暗的,这是因为宇宙是漆黑的,所以必须要添加平行光,也就是太阳光。在Hierarchy视图中右键单击,选择CreateEmpty,创建一个空白对象,将其更名为Lights。然后分别添加两个平行光,从不同的方向照射过来添加模仿万有引力的脚本接下来我们需要创建用于模拟万有引力的脚本。在编写代码前,我们可以回顾一下物理中所学过的万有引力定律添加模仿万有引力的脚本在Project视图中右键单击,创建一个新的脚本文件,将其命名为Attractor.cs,双击将其在VisualStudio中打开。更改其中的代码详细代码请参考Attracto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 照明设备性能对比方案
- 学校网络安全防护体系方案
- 工程设计变更管理方案
- 给水系统老旧设施更新改造方案
- 混凝土冷缝处理方案
- 地基与基础工程施工总结报告
- 招12人!湟源县人民医院2026年第一次公开招聘编外专业技术人员参考题库含答案
- 2025上海外国语大学三亚附属中学面向社会第二次招聘教师17人参考题库附答案
- 未来五年杉木原条企业县域市场拓展与下沉战略分析研究报告
- 未来五年无线电测试测量企业数字化转型与智慧升级战略分析研究报告
- 甘肃省酒泉市普通高中2025~2026学年度第一学期期末考试物理(含答案)
- 2026 年高职应用化工技术(化工设计)试题及答案
- 2026年山西供销物流产业集团面向社会招聘备考题库及一套完整答案详解
- 2024-2025学年重庆市大足区六年级(上)期末数学试卷
- 政治●天津卷丨2024年天津市普通高中学业水平选择性考试政治试卷及答案
- 汽车线束DFMEA设计失效模式和影响分析
- 乌鲁木齐地区2024年高三年级第一次质量监测(一模)英语试卷(含答案)
- plc电梯设计的参考文献
- 中伟西部基地液氨制氨水项目环评报告
- 地下室消防安全制度
- QC成果提高冷却塔现浇人字柱清水混凝土一次验收合格率
评论
0/150
提交评论