Read this manual in English

碰撞對象形狀

碰撞对象的形状可以包含多个简单形状组成也可以由一个复杂形状代替.

简单形状

简单形状有 box, spherecapsule. 要加入简单形状可以在碰撞对象上 右键单击 选择 Add Shape:

Add a primitive shape

方形

方形设定由位置, 旋转和尺寸 (宽度, 高度和深度) 组成:

Box shape

圓形

圆形设定由位置, 旋转和直径组成:

Sphere shape

膠囊形

胶囊形设定由位置, 旋转, 直径和高度组成:

Sphere shape

::: 注意 胶囊形仅用于 3D 物理 (在 game.project 文件的物理部分进行设置). :::

复杂形状

复杂形状可以由瓷砖地图生成或者使用凸多边形.

瓷砖地图碰撞形状

Defold 包含一个功能就是从瓷砖地图中自动生成物理碰撞形状. 瓷砖地图教程 介绍了新建瓷砖图源的碰撞组与把瓷砖分配给碰撞组的 (例子).

在瓷砖地图上添加碰撞:

  1. 右键点击 游戏对象, 选择 Add Component File. 来选取瓷砖地图文件.
  2. 右键点击 游戏对象, 选择 Add Component ▸ Collision Object 加入碰撞对象组件.
  3. 不加入形状, 而是配置 Collision Shape 属性为 瓷砖地图 文件.
  4. 设置碰撞对象的其他 属性.

Tilesource collision

::: 注意 这里的 Group 属性 不会 生效, 因为碰撞组已在瓷砖图源中定义好了. :::

凸多边形

Defold 有一个功能就是让你用3个或多个点建立凸多边形. 可以使用资源 Defold 多边形编辑器 或者 物理刚体编辑器 来创建凸多边形.

  1. 新建凸多边形文件 (扩展名 .convexshape).
  2. 不在碰撞对象上加入形状, 而是设置 Collision Shape 属性为 凸多边形文件.

::: 注意 编辑器里不显示形状. 只有 开启物理调试 才能在运行时看到形状. :::

缩放碰撞形状

可以让碰撞形状继承游戏对象的缩放. 在 game.project 里的物理部分勾选 Allow Dynamic Transforms 即可. 注意缩放继承只支持等比缩放, 如果不等比, 去三周最小值.

旋转碰撞形状

在3D物理世界中旋转碰撞形状

在3D物理中物体在各个轴上都可以进行旋转.

在2D物理世界中旋转碰撞形状

在3D物理中物体只能在z轴上旋转. 其他轴旋转会造成错误结果, 即使旋转180度用于翻转形状也不行. 要翻转物理形状推荐使用 physics.set_hlip(url, flip)physics.set_vlip(url, flip) 函数.


Did you spot an error or do you have a suggestion? Please let us know on GitHub!

GITHUB