- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 Unity物理引擎玩法设计
CONTENTS4.2 物理碰撞体组件解析4.3 物理关节组件解析4.5 物理引擎高级系统设置4.1 物理基础知识4.6 物理引擎玩法总结与拓展学习4.4 碰撞触发事件检测
物理基础知识1. Prefab预制体与实例化游戏对象2. Rigidbody刚体组件3. ConstantForce恒定力组件4. 碰撞触发事件5. 物理材质第一节
4.1.1 Prefab预制体与实例化游戏对象 Prefab预制体可以看作对象资源的一个模板,创建出来后可以被轻松的反复使用,同时也可以统一修改场景中所有用到该预制体对象的组件属性,参数等配置对象值。通常应用于反复需要被使用的石头、树木等环境资源,多次出现的NPC非玩家角色,不断生成并销毁的子弹对象等。1.创建使用实例化对象的常用方式有两种,一种是在编辑状态将Project面板中的预制体拖拽至Scene面板中进行创建,还有一种则是在游戏运行时通过代码的形式动态生成。2.方法函数常用运行实例化游戏对象函数有CreatePrimitive()、Instantiate()。其中Instantiate函数有以下几种重置方法,具体参数内容介绍见表4.1.1-1所示。original要复制的现有对象rotation新对象的方向position新对象的位置parent指定给新对象的父对象instantiateInWoldSpace指定父对象的方式是保持世界位置(true)或是相对位置(false)
4.1.1 Prefab预制体与实例化游戏对象using UnityEngine;public class CreatePrefab : MonoBehaviour{ public GameObject cube; public Transform t_cubeWall; void Update(){ if (Input.GetKeyDown(KeyCode.R)) for (int x = 0; x 3; x++) for (int y = 0; y 3; y++){ GameObject gameObject = Instantiate(cube, new Vector3(x, y, 1), Quaternion.identity,t_cubeWall); gameObject.AddComponentRigidbody();//组件的获取 gameObject.transform.position = new Vector3(x, y, 0); } }}3.案例实践 以Prefab为例介绍预制体的创建和使用方法。案例代码案例效果图
4.1.2 Rigidbody刚体组件 Rigidbody刚体组件是实现游戏对象物理行为的主要组件。对象添加刚体组件后便可以设置相关物理属性例如重力、阻力等参数,获取当前位置、速度等信息,也可以自定义取消受重力影响以及限制对象运动位置旋转状态。属性功能属性功能Mass对象的质量(Kg)Collision Detection碰撞检测模式Drag空气阻力大小velocity刚体的速度矢量Use Gravity是否受重力影响position刚体的位置Is Kinematic是否由物理引擎驱动rotation刚体的旋转Constraints对刚体运动限制worldCenterOfMass刚体在世界空间中的质心FreezePosition刚体位置移动限制FreezeRotation刚体局部旋转限制1.创建使用选中Hierarchy面板对象,点击菜单Component-Physics-Rigidbody添加刚体组件;或者选中需要添加的对象,点击Inspector面板的AddComponent按钮,搜索Rigidbody并添加刚体组件。
4.1.2 Rigidbody刚体组件using UnityEngine;public class Demo_Rigidbody : MonoBehaviour{ public Rigidbody cube; public float forceValue=10.0f;//设置力的大小 void Start(){ cube.mass=1.0f;//设置Cube质量为1kg cube.useGravity=true;//设置Cube受重力影响 cube.freezeRotation=true;//设置Cube无法旋
您可能关注的文档
- 设计心理学 课件.pptx
- Unity 3D 游戏开发(微课版)课件 08第八章 虚拟现实打包发布.pptx
- Unity 3D 游戏开发(微课版)课 件07第七章 寻路数据库网络.pptx
- Unity 3D 游戏开发(微课版)课件 06第六章 模型动画特效.pptx
- Unity 3D 游戏开发(微课版)课件 05第五章 灯光材质地形.pptx
- Unity 3D 游戏开发(微课版)课件 03第三章 界面交互设计.pptx
- Unity 3D 游戏开发(微课版)课件 01第一章 初识Unity引擎.pptx
- Unity 3D 游戏开发(微课版)课件 02第二章 核心原理学习.pptx
- Unity 3D 游戏开发(微课版)课后习题选择题答案.docx
- 执业药师《药事管理与法规》最新模拟题.pdf
文档评论(0)