前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >[学习笔记]unity3d-物理引擎(一)

[学习笔记]unity3d-物理引擎(一)

作者头像
六月丶
发布2022-12-26 17:51:04
发布2022-12-26 17:51:04
1.5K0
举报
文章被收录于专栏:六月-游戏开发六月-游戏开发

刚体

简介

  • 带有刚体组件的游戏物体。 add Compoment-physics-Rigidbody
  • 刚体组件可使游戏对象受物理引擎控制,在受到外力时产生真实世界中的运动。
  • 物理引擎:模拟真实世界中物体物理特性的引擎。

属性

  • 质量 Mass:物体的质量。
  • 阻力 Drag:当受力移动时物体受到的空气阻力。 0表示没有空气阻力。极大时可使物体停止运动,通常砖头0.001,羽毛设置为10。
  • 角阻力 Angular Drag:当受扭力旋转时物体受到的空气阻力。 0表示没有空气阻力,极大时使物体停止旋转。
  • 使用重力 Use Gravity:若激活,则物体受重力影响。
  • 是否是运动学Is Kinematic:若激活,该物体不再受物理引擎控制,而只能通过变换组件来操作。
  • 插值Interpolate:用于缓解刚体运动时的抖动。
    • 无 None :不应用插值。
    • 内插值 Interpolate :基于上一帧的变换来平滑本帧变换。
    • 外插值 Extrapolate :基于下一帧的预估变换来平滑本帧变换。
  • 碰撞检测 Collision Detection:碰撞检测模式。快速移动的刚体在碰撞时有可能互相穿透,可以设置碰撞检测频率,但频率越高对物理引擎性能影响越大。
    • 不连续 Discrete:不连续碰撞检测。适用于普通碰撞(默认模式)。
    • 连续 Continuous:连续碰撞检测。
    • 动态连续 Continuous Dynamic:连续动态碰撞检测,适用于高速物体。
  • 约束 Constraints:对刚体运动的约束。
    • 冻结位置 Freeze Position:刚体在世界中沿所选X,Y,Z轴的移动,将无效。
    • 冻结旋转 Freeze Rotation:刚体在世界中沿所选的X,Y,Z轴的旋转,将无效。

碰撞器

简介

  • 使刚体具有碰撞效果。
  • 可以单独作用于物体,但是要使移动的物体具有碰撞效果,必须附加刚体组件。分类
  • 静态碰撞器 Static Collider :只有碰撞器没有刚体的物体 现象:保持静止或者轻微移动,如:平面/树木。
  • 刚体碰撞器 Rigidbody Collider:具有刚体和碰撞器的物体; 现象:完全受物理引擎影响。
  • 运动学刚体碰撞器:带刚体,且勾选Is Kinematic。 此碰撞器不能添加力,只能通过transform移动。属性
  • 是否触发器 Is Trigger:如激活,此碰撞器用于触发事件,并且被物理引擎忽略。
  • 材质 Material:引用何种物理材质决定了它和其它对象如何作用。
  • 凸起的Convex:不激活则网格碰撞器间没有碰撞效果;
  • Mesh网格:用于碰撞所引用的网格。碰撞条件
  • 两者具有碰撞组件。
  • 运动的物体具有刚体组件。碰撞三阶段
  • 当进入碰撞时执行 void OnCollisionEnter(Collision collOther)
  • 当碰撞体与刚体接触时每帧执行 void OnCollisionStay(Collision collOther)
  • 当停止碰撞时执行 void OnCollisionExit(Collision collOther)Collision参数 事件参数类
  • 获取对方碰撞器组件 other.cllider.getCompontent<?>();
  • 获取接触点 CotactPoint cp = other.contacts[0];
  • 获取接触点世界坐标 Vector3 p = cp.point;
  • 获取接触面法线 Vector3 v = cp.normal;

触发器

简介

  • 带有碰撞器组件,且Is Trigger属性被勾选的物体。
  • 现象:无碰撞效果。触发条件
  • 两者具有碰撞组件
  • 其中至少一个带有刚体组件。
  • 其中至少一个勾选isTrigger。触发三阶段
  • 当Collider(碰撞体)进入触发器时执行。 void OnTriggerEnter(Collider cldOther)
  • 当碰撞体与触发器接触时每帧执行。 void OntriggerStay(Collider cldOther)
  • 当停止触发器时执行 void OnTriggerExit(Collider cldOther)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 刚体
    • 简介
    • 属性
  • 碰撞器
    • 简介
  • 触发器
    • 简介
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档