Unity3d学习笔记——物理引擎

  • 一、物理引擎
    • 1、刚体 Rigidbody
      • 1>简介
      • 2>属性
    • 2、碰撞体 Collider
      • 1>简介
      • 2>分类
      • 3>属性
        • a) Box Collider 盒型碰撞体
        • b) Sphere Collider 球形碰撞体
        • c) Capsule Collider 胶囊碰撞体
        • d) Mesh Collider 网格碰撞体
        • e) Wheel Collider 车轮碰撞体
        • f) Terrain Collider 地形碰撞体
      • 4>物理材质
      • 5>碰撞条件
      • 6>碰撞三阶段
    • 3、触发器 Trigger
      • 1>简介
      • 2>触发条件
      • 3>触发三阶段
    • 4、恒定力 Constant Force
      • 1> 简介
      • 2> 属性
    • 5、角色控制器 Character Controller
      • 1>简介
      • 2> 属性
    • 6、关节 Joint
      • 1> 简介
      • 2> 分类
      • 3> 属性
        • a) Hinge Joint 铰链关节
        • b) Fixed Joint 固定关节
        • c) Spring Joint 弹簧关节
        • d) Character Joint 角色关节
        • e) Configurable Joint 可配置关节

一、物理引擎

1、刚体 Rigidbody

1>简介

  • 刚体可以为游戏对象赋予物理特性,是游戏对象在物理系统的控制下接受推力和扭力,从而实现现实世界的物理学现象。

2>属性


2、碰撞体 Collider

1>简介

  • 碰撞器是物理组件的一类,他与刚体一起促使碰撞发生
  • 碰撞体是简单形状,如方块、球形或者胶囊形,在 Unity 3D 中每当一个 GameObjects 被创建时,它会自动分配一个合适的碰撞器。一个立方体会得到一个 Box Collider(立方体碰撞体),一个球体会得到一个 Sphere Collider(球体碰撞体),一个胶囊体会得到一个 Capsule Collider(胶囊体碰撞体)等。

2>分类

  • 当游戏对象中的Rigidbody碰撞组件被添加后,其属性面板中会显示相应的属性设置选项,每种碰撞体的资源类型稍有不同。

3>属性

a) Box Collider 盒型碰撞体

  • Box Collider 是最基本的碰撞体,Box Collider 是一个立方体外形的基本碰撞体
  • 一般游戏对象往往具有 Box Collider 属性,如墙壁、门、墙以及平台等,也可以用于布娃娃的角色躯干或者汽车等交通工具的外壳,当然最适合用在盒子或是箱子上。

  • 如果 Is Trigger 选项被勾选,该对象一旦发生碰撞动作,则会产生 3 个碰撞信息并发送给脚本参数,分别是 OnTriggerEnter、OnTriggerExit、OnTriggerStay
  • Physics Material 定义了物理材质,包括冰、金属、塑料、木头等

b) Sphere Collider 球形碰撞体

  • Sphere Collider 是球体形状的碰撞体
  • Sphere Collider 是一个基于球体的基本碰撞体,Sphere Collider 的三维大小可以按同一比例调节,但不能单独调节某个坐标轴方向的大小
  • 当游戏对象的物理形状是球体时,则使用球体碰撞体,如落石、乒乓球等游戏对象

c) Capsule Collider 胶囊碰撞体

  • Capsule Collider 由一个圆柱体盒两个半球组合而成,Capsule Collider 的半径和高度都可以单独调节,可用在角色控制器或与其他不规则形状的碰撞结合来使用
  • 通常添加至 Character 或 NPC 等对象的碰撞属性

d) Mesh Collider 网格碰撞体

  • Mesh Collider(网格碰撞体)根据 Mesh 形状产生碰撞体,比起 Box Collider、Sphere Collider 和 Capsule Collider,Mesh Collider 更加精确,但会占用更多的系统资源
  • 专门用于复杂网格所生成的模型

e) Wheel Collider 车轮碰撞体

  • Wheel Collider(车轮碰撞体)是一种针对地面车辆的特殊碰撞体,自带碰撞侦测、轮胎物理现象和轮胎模型,专门用于处理轮胎

f) Terrain Collider 地形碰撞体

  • 地形碰撞体 (Terrain Collider) 实现了一个碰撞表面,其形状与其所附加到的 Terrain 对象相同

4>物理材质

  • 用于调整碰撞对象的摩擦力和反弹效果
  • 属性

5>碰撞条件

  • 在unity3D中要实现碰撞检测,需要满足以下条件:
    1、两个物体都具有碰撞组件
    2、至少有一个物体拥有Rigidbody组件
    3、Collider都不勾选Is Trigger

6>碰撞三阶段

  • MonoBehaviour.OnCollisionEnter:当进入碰撞时触发
  • MonoBehaviour.OnCollisionExit:当退出碰撞时时触发
  • MonoBehaviour.OnCollisionStay:当逗留在碰撞中触发

3、触发器 Trigger

1>简介

  • 在Unity3D中,检测碰撞发生的方式有两种
    1、利用碰撞体
    2、利用触发器
  • 在很多游戏引擎或工具中都有触发器,他被用来触发事件
  • 碰撞体与触发器的区别在于:
    1、碰撞体是触发器的载体
    2、触发器只是碰撞体的一个属性
  • 如果既想要检测到物理的接触,又不想让碰撞检测影响物体的移动,或者要检测一个物体是否经过控件中的某个区域,这是就可以用到触发器
  • 例如:碰撞体适合模拟汽车被撞飞、皮球掉在地上又反弹的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果

2>触发条件

  • 在unity3D中要实现触发检测,需要满足以下条件:
    1、两个物体都具有Collider组件
    2、至少有一个物体拥有Rigidbody组件
    3、至少有一个物体的Collider组件勾选了Is Trigger

3>触发三阶段

  • MonoBehaviour.OnTriggerEnter:当进入触发器时触发
  • MonoBehaviour.OnTriggerExit:当退出触发器时触发
  • MonoBehaviour.OnTriggerStay:当逗留在触发器中触发

4、恒定力 Constant Force

1> 简介

  • 恒定力 (Constant Force) 可用于快速向刚体添加恒定力。如果不希望某些一次性对象以较大的速度开始而是逐渐加速(比如火箭),则很适合使用恒定力

2> 属性


  • 要使对象向上运动,请添加具有正 Y 值 Force 属性的恒定力。
  • 要使对象向前飞行,请添加具有正 Z 值 Relative Force 属性的恒定力。

5、角色控制器 Character Controller

1>简介

  • 在 Unity 3D 中,游戏开发者可以通过角色控制器来控制角色的移动。
  • 角色控制器允许游戏开发者在受制于碰撞的情况下发生移动,而不用处理刚体
  • 角色控制器不会受到力的影响,在游戏制作过程中,游戏开发者通常在任务模型上添加角色控制器组件进行模型的模拟运动

2> 属性


6、关节 Joint

1> 简介

  • 在 Unity 3D 中,物理引擎内置的关节组件能够使游戏对象模拟具有关节形式的连带运动
  • 关节对象可以添加至多个游戏对象中,添加了关节的游戏对象将通过关节连接在一起并具有连带的物理效果
  • 需要注意的是,关节组件的使用必须依赖刚体组件

2> 分类

  • Hinge Joint 铰链关节
    1、铰链关节 (Hinge Joint) 将两个刚体组合在一起,对刚体进行约束,让它们就像通过铰链连接一样移动。
    2、铰链关节非常适合用于门,但也可用于模拟链条、钟摆等对象
  • Fixed Joint 固定关节
    1、 固定关节 (Fixed Joint) 将对象的移动限制为依赖于另一个对象。这有点类似于管控 (Parenting),但是实现的方式是通过物理系统而不是变换 (Transform) 层级视图。
    2、使用固定关节的最佳场合是在希望对象可以轻松相互分离时,或者在没有管控情况下连接两个对象的移动。
  • Spring Joint 弹簧关节
    1、弹簧关节 (Spring Joint) 将两个刚体连接在一起,但允许两者之间的距离改变,就好像它们通过弹簧连接一样
  • Character Joint 角色关节
    1、角色关节 (Character Joint) 主要用于布娃娃效果。此类关节是延长的球窝关节,可在每个轴上限制该关节
  • Configurable Joint 可配置关节
    1、可配置关节 (Configurable Joint) 包含其他关节类型的所有功能,并提供更强大的角色移动控制。
    2、当您想要自定义布娃娃的运动并对角色强制实施某些姿势时,这种关节特别有用。
    3、使用可配置关节还可以将关节修改为您自行设计的高度专业化关节

3> 属性

a) Hinge Joint 铰链关节


b) Fixed Joint 固定关节


c) Spring Joint 弹簧关节


d) Character Joint 角色关节




  • 示例
  • 扭转轴(用辅助图标上的橙色椎体可视化)可在很大程度上控制上限和下限,允许按照度数指定上限和下限(限制角度是相对于开始位置进行测量的)。Low Twist Limit > Limit 中的值 –30 和 High Twist Limit > Limit 中的值 60 可将围绕扭转轴(橙色辅助图标)的旋转范围限制在 –30 度到 60 度之间。
  • Swing 1 Limit 可限制摆动轴的旋转范围(用辅助图标上的绿色轴可视化)。限制角度是对称的。因此,值 30 会将旋转限制在 –30 到 30 之间。
  • Swing 2 Limit 轴未显示在辅助图标上,但该轴垂直于其他两个轴(即辅助图标上用橙色可视化的扭转轴和辅助图标上用绿色可视化的 Swing 1 Limit 轴)。 角度是对称的,因此值 40 可将围绕该轴的旋转范围限制在 –40 度到 40 度之间。

e) Configurable Joint 可配置关节











Unity3D学习笔记——物理引擎相关推荐

  1. Unity3D 学习笔记3——了解U3D引擎的操作面板和各种工具

    Unity3D 学习笔记3--了解U3D引擎的操作面板和各种工具 在完成了Unity的安装破解之后,我们接下来要做的当前是启动这个引擎,然后学会如何去使用它为我们提供的各种工具,这也是上手任何一个软件 ...

  2. Unity3D学习笔记:粒子特效参数

    Unity3D学习笔记:粒子特效参数含义 转载 https://blog.csdn.net/asd237241291/article/details/8433534 粒子特效 粒子系统检视面板 初始化 ...

  3. Unity3D学习笔记12——渲染纹理

    文章目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实 ...

  4. Unity3D学习笔记(二、小球滚动吃金币)

    源码:键盘方向键操作小球滚动吃金币Unity3D源码 下篇:Unity3D学习笔记(三.小球跑酷) 一.颜色材质球创建  二.Plane平板创建 三.围墙 同理二,新建Cube,并调整属性,设立围墙 ...

  5. mysql 学习笔记--存储引擎、索引、sq优化

    全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...

  6. Unity3D学习笔记3——Unity Shader的初步使用

    文章目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. ...

  7. Unity3D 学习笔记4 —— UGUI+uLua游戏框架

    Unity3D 学习笔记4 -- UGUI+uLua游戏框架 使用到的资料下载地址以及基础知识 框架讲解 拓展热更过程 在这里我们使用的是uLua/cstolua技术空间所以提供的UGUI+uLua的 ...

  8. Unity3D学习笔记6——GPU实例化(1)

    文章目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成 ...

  9. Unity3D学习笔记8——GPU实例化(3)

    文章目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1) ...

  10. unity3d 学习笔记四 skybox(天空盒) light(光源) halo(光晕)

    Unity3D学习笔记(四)天空.光晕和迷雾 六年前第一次接触<魔兽世界>的时候,被其绚丽的画面所折服,一个叫做贫瘠之地的地方,深深印在我的脑海里.当时在艾泽拉斯大陆还不能使用飞行坐骑,试 ...

最新文章

  1. 用koa开发一套内容管理系统(CMS),支持javascript和typescript双语言
  2. php 提取全部html标签,php提取html中的img标签
  3. C# HttpWebResponse WebClient 基础连接已经关闭: 发送时发生错误.
  4. js操作样式自动prefix
  5. Python操作Mysql实例代码教程在线版(查询手册)_python
  6. 提高数据库查询速度的几个思路
  7. ROS Rviz 显示地图 Python
  8. 使用scrapy-redis构建简单的分布式爬虫
  9. JAVA 练习题(4)
  10. 树莓派硬件编程——(一)用RPi.GPIO库输出信号
  11. [渝粤教育] 西南石油大学 钻井与完井工程 参考 资料
  12. Hadoop-Hive常用,命令
  13. 30天自制操作系统——第二十三天窗口操作
  14. ctrl+enter键
  15. 大数据分析师高级证书_数据分析师资格证书好考吗_大数据分析师认证
  16. EMC | 静电防护方法
  17. java通过qq邮箱发送_java实现发送QQ邮箱
  18. what this book can do for you ?
  19. 《极简GDP史》精髓:GDP虽有诸多局限性,但是对于社会经济发展仍然有举足轻重的作用
  20. Android系统开发:GMS包移植

热门文章

  1. python判断题题库大数据技术_智慧树_大数据分析的python基础_判断题答案
  2. 学计算机加数模社团,优秀社团 | 数学建模协会
  3. linux tar 命令安装,Linux tar 命令 command not found tar 命令详解 tar 命令未找到 tar 命令安装 - CommandNotFound ⚡️ 坑否...
  4. 美洽客服JavaScript 网页插件
  5. 【电子电路】电子基础基本知识和面试要点
  6. 谷歌地球(Google Earth)7.3.1.4507官方多语言专业版
  7. 读书笔记1:《C++沉思录》
  8. matlab神经网络流程图,BP神经网络算法步骤.doc
  9. 广州网站建设哪些公司好
  10. 打卡赠书,新一年的读者福利 !