Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ConcavePolygonShape3D

继承: Shape3D < Resource < RefCounted < Object

用于物理碰撞的 3D 三角网格形状。

描述

一种用于物理模拟的 3D 三角网格形状。通常用于为 CollisionShape3D 提供形状。

作为一组相互连接的三角形, ConcavePolygonShape3D 是最自由的可配置的单一 3D 形状。它可以用于形成任何性质的多面体,甚至是不封闭体积的形状。然而,即使相互连接的三角形封闭了一个体积, ConvexPolygonShape3D 仍然是中空的,这常常使其不适用于物理模拟或碰撞检测。

注意:当用于碰撞计算时, ConcavePolygonShape3D 旨在与 StaticBody3D 等静态 CollisionShape3D 节点一起使用 。并且对于 CharacterBody3DRigidBody3D,在除静态模式之外的其他模式下可能表现不佳。

警告:较小的物理物体在快速移动时有机会穿过该形状。发生这种情况是因为在一帧上,物理物体可能位于形状的“外部”,而在下一帧上,它可能位于形状的“内部”。由于ConcavePolygonShape3D 是中空的,因此它不会检测到碰撞。

性能:由于其复杂性, ConcavePolygonShape3D 是检测碰撞最慢的 3D 碰撞形状。它的使用一般仅限于关卡几何体。对于凸几何体,应使用 ConvexPolygonShape3D 。对于需要凹碰撞的动态物体,可以使用多个 ConvexPolygonShape3D 通过凸分解来表示其碰撞;相关说明请参阅 ConvexPolygonShape3D 文档。

教程

属性

bool

backface_collision

false

方法

PackedVector3Array

get_faces ( ) const

void

set_faces ( PackedVector3Array faces )


属性说明

bool backface_collision = false

  • void set_backface_collision_enabled ( bool value )

  • bool is_backface_collision_enabled ( )

如果设置为 true,则碰撞会发生在凹形面的两侧。否则,它们只会沿着面法线发生。


方法说明

PackedVector3Array get_faces ( ) const

以顶点数组的形式返回三角网格形状中的面。该(长度能被三整除的)数组自然三三分组;每组中的三个顶点定义一个三角形。


void set_faces ( PackedVector3Array faces )

根据顶点数组设置三角网格形状的面。faces 数组应更多由若干三元组构成,每三个顶点定义一个三角形。