博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity2D物理引擎之-Rigidbody 2D
阅读量:4967 次
发布时间:2019-06-12

本文共 1648 字,大约阅读时间需要 5 分钟。

虽然Rigidbody 2D大致上可以看成是Rigidbody的2D化,大部分功能也是一致的,但是还是有一些细节问题。

 

一些事项:

1.任何添加到同一个 GameObject身上或者其子物体身上的 2D Collider组件都隐式的 附属于 那个 Rigidbody 2D.

2.当一个Collider 2D组件附属到一个Rigidbody 2D身上时,它就跟随Rigidbody 2D移动。这时不应该通过直接设置Transform 或者 Collider的偏移量来 移动。

3.附属于同一个 Rigidbody 2D的所有 Collider 2D,它们相互是不会发生碰撞检测的。

 

刚体类型:

1. Rigidbody 2D 有三个类型:Dynamic、Kinematic、Static

2. 刚体类型主要影响一下几个要素:

  a. 移动行为(位置、旋转)

  b. 碰撞体交互

3. 注意一点,虽然Rigidbody 经常被描述成 是与其它 rigidbody 相互碰撞,但是实际上是 附加在Rigidbody上的Collider在进行碰撞检测,Rigidbody在没有Collider的情况下,是没法相互碰撞的。

4. 改变Rigidbody 2D的类型是一个比较麻烦的事情。当一个刚体类型改变,许多关联的变量会立马重置,并且需要重新赋值,而且与刚体关联的所有Collider需要在下一个FixiedUpdate之前重新认知,这样可能会导致奇怪的表现。

 

刚体类型: Dynamic

概括来说,这种类型是为了 物理仿真运动而设计的。(让物体看起来更像现实世界行为)它的运动受重力、质量、其他力影响。并且这种类型会与其他所有刚体类型发生碰撞

  • Simulated:该组件是否与仿真模拟交互。
  • Collision Detection:碰撞体之间的碰撞检测方式:
    • Discrete:在一个 物理更新期间,物理可以相互重叠、穿越。当速度太快时,碰撞只会在最新的位置检测,这就意味着,如果速度太快,使用这个选项会有问题。
    • Continuous:这个就不会存在Discete的问题,但是CPU消耗高。
  • Sleeping Model:在什么情况下,会休眠以节省性能。
    • Never Sleep:从不休眠
    • Start Awake:物体最初是醒着的
    • Start Asleep:物体最初是休眠的,但是遇到碰撞就会苏醒。
  • Interpolate:在物理更新中,物体移动的插值算法
    • None:
    • Interpolate:基于上一帧物体位置来插值模拟
    • Extrapolate:基于预测下一阵物体位置来插值模拟

刚体类型:Kinematic

这种类型,物体移动也是在仿真下进行的,但是却是在 用户非常明确的控制 的前提下进行的。

 

注意

  1. 这种类型不受力、重力的影响

  2. 它使用Rigidbody2D.MovePosition or Rigidbody2D.MoveRotation API来移动。

  3. 它使用物理引擎来查询 碰撞,并且通过编程来决定物体如何移动。

  4. 实际上,这种类型仍然通过它的速度来移动,但是它的速度却不受其他任何力的影响。

  5. 这种类型 不会 与其它Kinematic或者Static类型发生碰撞检测

  6. 在碰撞过程中,这种类型的物体表现为不受力(质量无穷大)。

 

  • Simulated:如果想要在运行时 与其它Collider 2D 发生物理仿真交互,就打开它。
  • Use Full Kinematic Constacts:开启它,该物体就可以与其它任意类型的Rigidbody 2D发生碰撞。

刚体类型:Static

1. 它只与 Dynamic 类型的Rigidbody 发生碰撞.

2. 无法拥有两个 Static 的Rigidbody 2D。

 

转载于:https://www.cnblogs.com/leiGameDesigner/p/9144058.html

你可能感兴趣的文章
Alienware-15-R3 装Ubuntu 16.04.3 LTS
查看>>
python 字典元素删减
查看>>
pg_config - 检索已安装版本的 PostgreSQL 的信息
查看>>
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转载)
查看>>
Android自定义日历控件(继承系统控件实现)
查看>>
java中判断list是否为空的用法
查看>>
使用vs2010生成clickonce安装引导程序的方法
查看>>
Android Studio 三种添加插件的方式,androidstudio
查看>>
淘宝指数于2016年3月23日正式下线
查看>>
Visual Studio 各版本下载合集vs2005下载vs2008下载vs2010下载vs2012下载vs2015 vs2017 下载...
查看>>
读BeautifulSoup官方文档之html树的搜索(1)
查看>>
Bypass WAF
查看>>
锋利的js之妈妈再也不用担心我找错钱了
查看>>
由于启动用户实例的进程时出错的解决方法
查看>>
如何调试Javascript代码
查看>>
爬虫之动态HTML处理(Selenium与PhantomJS )动态页面模拟点击
查看>>
CI框架集成Smarty
查看>>
点击按钮触发声音(xaml实现)
查看>>
初识异步、并发处理纯代码及Demo
查看>>
Android 数据库打包随APK发布
查看>>