ConcavePolygonShape3D
继承: Shape3D < Resource < RefCounted < Object
用于物理碰撞的 3D 三角网格形状。
描述
一种用于物理模拟的 3D 三角网格形状。通常用于为 CollisionShape3D 提供形状。
作为一组相互连接的三角形, ConcavePolygonShape3D 是最自由的可配置的单一 3D 形状。它可以用于形成任何性质的多面体,甚至是不封闭体积的形状。然而,即使相互连接的三角形封闭了一个体积, ConvexPolygonShape3D 仍然是中空的,这常常使其不适用于物理模拟或碰撞检测。
注意:当用于碰撞计算时, ConcavePolygonShape3D 旨在与 StaticBody3D 等静态 CollisionShape3D 节点一起使用 。并且对于 CharacterBody3D 或 RigidBody3D,在除静态模式之外的其他模式下可能表现不佳。
警告:较小的物理物体在快速移动时有机会穿过该形状。发生这种情况是因为在一帧上,物理物体可能位于形状的“外部”,而在下一帧上,它可能位于形状的“内部”。由于ConcavePolygonShape3D 是中空的,因此它不会检测到碰撞。
性能:由于其复杂性, ConcavePolygonShape3D 是检测碰撞最慢的 3D 碰撞形状。它的使用一般仅限于关卡几何体。对于凸几何体,应使用 ConvexPolygonShape3D 。对于需要凹碰撞的动态物体,可以使用多个 ConvexPolygonShape3D 通过凸分解来表示其碰撞;相关说明请参阅 ConvexPolygonShape3D 文档。
教程
属性
|
方法
get_faces() const | |
void | set_faces(faces: PackedVector3Array) |
属性说明
bool backface_collision = false
🔗
如果设置为 true
,则碰撞会发生在凹形面的两侧。否则,它们只会沿着面法线发生。
方法说明
PackedVector3Array get_faces() const 🔗
以顶点数组的形式返回三角网格形状中的面。该(长度能被三整除的)数组自然三三分组;每组中的三个顶点定义一个三角形。
void set_faces(faces: PackedVector3Array) 🔗
根据顶点数组设置三角网格形状的面。faces
数组应更多由若干三元组构成,每三个顶点定义一个三角形。