虽然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。

unity2D物理引擎之-Rigidbody 2D的更多相关文章

  1. 关于Unity中物理引擎的使用

    物理引擎控制刚体,刚体上面贴上图片,所以看起来就是游戏运行起来的状态 物理世界计算刚体的运行状态,通过贴图显现出运算结果. 一.物理引擎 1:Unity 2D物理引擎基于Box2D封装而成;2: 物理 ...

  2. 基于APE物理引擎的管线容积率计算方法

    容积率一般应用在房地产开发中,是指用地范围内地上总建筑面积与项目总用地面积的比值,这个参数是衡量建设用地使用强度的一项非常重要的指标.在其他行业,容积率的计算也非常重要,如产品利用率.管道使用率等等. ...

  3. 制作简单的2D物理引擎(零)

    最近发现了Github上的开源物理引擎项目Matter.js,对它很感兴趣,发现源码并不算长,算上注释大约1万行左右,值得剖析一番.Matter.js实现一个最小化的2D物理引擎,性能不错,故打算用C ...

  4. Matter.js – 你不能错过的 2D 物理引擎

    Matter.js 是一个 JavaScript 2D 刚体物理引擎的网页.Matter.Engine 模块包含用于创建和操作引擎的方法.这个引擎是一个管理更新和渲染世界的模拟控制器. Matter. ...

  5. [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)

    在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...

  6. HTML5之2D物理引擎 Box2D for javascript Games 系列 翻外篇--如何结合createJS应用box2d.js

    太久没有更新了,新年回来工作,突然有收到网友的邮件提问,居然还有人在关注,惭愧,找了下电脑上还有一点儿存着,顺便先发这一个番外篇吧,好歹可以看到真实的效果,等我考完英语,一定会更新下一章," ...

  7. HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分

    我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...

  8. Unity3D_(物理引擎)Rigidbody组件

    Rigidbody组件刚体(Rigidbody)是Unity物理引擎中的重要组件,一个游戏对象添加了刚体组件以后就开始接受物理力学的影响了,比如重力.空气摩擦力.碰撞产生的推力   Learn 相同高 ...

  9. 制作简单的2D物理引擎(一)——动力学基础

    一切的基础 点 在二维平面中,点$P$就是坐标$(x,y)$,点集就是一系列坐标的集合$\{P_1,P_2,...,P_n\}$,不过这个集合是有序的(顺时针). 向量 加减运算 $$\vec{P}\ ...

随机推荐

  1. c++中包含string成员的结构体拷贝导致的double free问题

    最近调试代码遇到一个的问题,提示double free,但是找了好久也没有找到释放两次的地方,后来调试发现,是由于使用了一个包含string成员的结构体,这个结构体使用memcpy拷贝导致的问题: 代 ...

  2. Android Studio--家庭记账本(二)

    家庭记账本APP目前实现了记账功能,也就是说增加功能,今天打算添加删除功能,参考着增加的代码研究,从网上查阅资料,打算实现左滑删除功能,目前学到了xml里面的HorizontalScrollView布 ...

  3. image classification backbone 汇总分析

    下面是一个list,可以详细看一下 image_classification = [['name','top1_acc','top5_acc','size'],['FixEfficientNet-L2 ...

  4. 你可以 CRUD,但你不是 CRUD 程序员!

    什么是务实 务实程序员他们总是在面临问题时,透过问题看到本质,从具体的场景出发,从大局着想,了解整个问题的来龙去脉,他们会对自己的行为负责,在项目面临问题时,他们不会撒手不管或者任由风险一步步扩大直至 ...

  5. 定宽整形(C++11起)

    定义于头文件 cstdint中int8_t.int16_t.int32_t.int64_t 分别为宽度恰为 8 . 16 . 32 和 64 位的有符号整数类型无填充位并对负值使用补码(仅若实现支持该 ...

  6. 2020-04-17:说说redis的rdb原理。假设服务器的内存8g,redis父进程占用了6g,子进程fork父进程后,子父进程总共占用内存12g,如何解决内存不足的问题?(挖)

    福哥答案2020-04-18: 这是一道挖坑题.内存占用只会比6g多一点,不会用12g.fork+cow.

  7. printf函数和putchar函数

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib. ...

  8. redis读写分离及可用性设计

    Redis缓存架构设计 对于下面两个架构图,有如下想法: 1)redis主从复制模式,为了解决master读写压力,对master进行写操作,对slave进行读操作. 2)而在分片集群中,如果对部分分 ...

  9. 笔记:安装VM Tools、vim编辑器、压缩包、Linux用户管理

    一.VM Tools安装 1.作用:方便我们在虚拟机和宿主机之间复制数据或移动文件等. 2.安装步骤: step1:在菜单栏找到虚拟机---->找到安装vm tools ,点击: step2:进 ...

  10. SEGGER studio问题

    刚开始学习用SEGGER studio编译调试nordic 52840程序,在此记录遇到的问题. 1.  Additional Load File[0]:"E:\nordic/nRF5_SD ...