UDN
Search public documentation:
StaticMeshCollisionReferenceCH
English Translation
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
静态网格物体碰撞参考
文档摘要:本文档涵盖静态网格物体碰撞的相关说明。 文档修改日志:由Chris Linder(DemiurgeStudios)于2003年10月28日创建的基于2226的相关建模文档。相关文档
CollisionTutorial, KarmaReference, StaticMeshesTutorial, ActorVariables介绍
在虚幻引擎中,碰撞是一个非常微妙的部分,不仅非常复杂而且还存在细微差别,完全可以成为长篇累述的主题。本文档缩小了碰撞的范围,主要关注Physics设置为PHYS_None的静态网格物体或者Mover(移动者(Mover))。对于“静态网格物体”而言,我指的是DrawType设置为DT_StaticMesh的任何对象。这包括您通过右击并选择添加Add static mesh:“...”而放置在虚拟世界中的静态网格物体以及用在Actor浏览器中绘制的静态网格物体。静态网格物体的物理属性也非常重要,因为当静态网格物体正位于此位置而其它东西撞入它们或者当静态网格物体为移动者(Mover)时,静态网格物体的碰撞效果最好。运动的静态网格物体(但不是移动者(Mover))也可以碰撞,本文档对这些情况也会有所帮助。欲获得更多详细信息请查看运动的静态网格物体章节。 即使在以上描述的狭义范围内,也存在众多复杂情况。本文档旨在提供一个关于与给定设置发生碰撞的静态网格物体种类和方式的全面参考。关于碰撞,首先要意识到需要设置许许多多的变量,而且它们相互关联。不存在您可检测并使碰撞发生的单一字段。有些关于碰撞的碰撞检测发生在其它碰撞检测之前,因此它们有高优先级。由于特定碰撞碰撞检测的优先级,本文档按步骤介绍流程,指导您制作静态网格物体碰撞。在任一步骤中,您可以制作一个不发生碰撞的对象。要确保一个对象确实会发生碰撞,您必须继续完成所有其它步骤。步骤 1:actor碰撞属性
如果您将actor碰撞属性(属性中的“Collision”类别)设置为不发生碰撞,没有任何静态网格物体碰撞的更改(静态网格物体浏览器中的属性)将使它发生碰撞。actor碰撞属性表明如果该actor试图要发生碰撞,则静态网格物体碰撞属性说明它是否及如何发生碰撞。 例如,如果您想要一个网格物体阻挡一个KActor,但是您将bBlockKarma 设置为假,它将不会发生碰撞。如果您将bBlockKarma设置为真(并将一个静态网格物体的所有其它碰撞属性保持为默认值),它将发生碰撞。如果对所有材质,您将UseSimpleKarmaCollision,UseSimpleBoxCollision,与UseSimpleLineCollision设置为假而将EnableCollision设置为真,毫无疑问它会发生碰撞。碰撞变量
本部分解释了静态网格物体的actor碰撞变量。微妙的一点是:根据 bWorldGeometry 的值为真或者假,碰撞变量将表现不同。当您通过右击并选择Add static mesh:'....'将一个静态网格物体放置在UnrealEd的关卡中,这种类型的静态网格物体的 bWorldGeometry 为真。其它类型的有一个 DrawType 的 DT_StaticMesh 的actor,其 bWorldGeometry 可能为假。 bWorldGeometry 值在UnrealEd中不能被修改甚至不能查看;它只能够在UnrealScript中被看到并更改。总体来说,如果某物体为三维几何体,它从不运动或者改变,它的 bWorldGeometry 可能为真。如果一个用静态网格物体绘制的actor曾经运动或者改变,它的 bWorldGeometry 可能为假。 还值得注意有些actor通过代码复写UnrealEd中指定的值,更改它们的一些碰撞值,敬请留心。例如,这是 Triggers , Teleporters ,与 WarfareStationaryWeapons 的情况。关于“Collision(碰撞)”对“Blocking(阻挡)”的一个重要注意事项
“Collision(碰撞)”(例如在 bCollideActors 的情况下)是指引擎计算两个物体是否发生接触。“Blocking(阻挡)”(例如在bBlockKarma的情况下)是指一个物体使另一个物体停止。例如触发器发生碰撞但不阻挡。这就是引擎知道您接触了触发器的方式,但您仍然可以穿过这个触发器。bWorldGeometry 为真的变量描述
下面是当actor碰撞变量应用于 bWorldGeometry 设置为真的actor时,对actor碰撞变量的描述。这是通过右击并选择Add static mesh:'....'而生成的 StaticMeshActor 的情况。默认值按照 StaticMeshActor 所提供的情况。设置 | 描述 | 默认值 |
---|---|---|
bCollideActors | 这是最重要的碰撞变量。如果 bCollideActors 为假,此静态网格物体将不会与任何东西发生碰撞。这是由于它不在碰撞散列中。如果它为真,根据下面的其它设置,此静态网格物体可能会发生碰撞。 | 真 |
bBlockZeroExtentTraces | bBlockZeroExtentTraces 确定此静态网格物体是否要试图阻挡零粗细追踪。例如大多数武器开火使用零粗细追踪。无论 bUseCylinderCollision 为真或者为假,此网格物体是否真的阻挡将由圆柱体碰撞决定。静态网格物体碰撞属性在后面解释。 | 真 |
bBlockNonZeroExtentTraces | bBlockNonZeroExtentTraces 确定此静态网格物体是否要试图阻挡非零粗细追踪。例如运动员运动使用非零粗细追踪。无论 bUseCylinderCollision 为真或者为假,此网格物体是否真的阻挡将由圆柱体碰撞决定。静态网格物体碰撞属性在后面解释。 | 真 |
bBlockKarma | 将此设置为真将使此静态网格物体试图阻挡karma。网格物体是否发生实际阻挡由下面解释的静态网格物体碰撞属性决定。注意:这不受 bUseCylinderCollision 影响。 | 真 |
bUseCylinderCollision | 如果此为真,引擎将对除karma碰撞外的所有碰撞使用圆柱体碰撞(由 CollisionRadius 与 CollisionHeight 确定)。除了karma碰撞外,静态网格物体碰撞属性中的所有设置都被忽略。 | 假 |
bPathColliding | 如果 bBlockActors 与 bCollideActors 为真,且 bStatic 为假,如果您将 bPathColliding 设置为假,此actor在路径建立时不发生碰撞。这意味着人工智能认为它们能够运动穿越该actor,即使它们不能。如果人工智能能够运动穿越该actor,设置 bPathColliding 为真将不阻止人工智能找到查找穿越该actor的路径,。此设置对在AI移动者(Mover)试图穿越它时会主动从该路径上移开的移动者(Mover)或者任何actor有用。在大多数情况下,由于 StaticMeshActors 的bStatic 为真, bPathColliding 与静态网格物体不相关。 | 假 |
bCollideWorld | 不影响 bWorldGeometry = 真 静态网格物体如何碰撞。 | 假 |
bBlockActors | 不影响 bWorldGeometry = 真 静态网格物体如何碰撞。 | 假 |
bBlockPlayers | 不影响 bWorldGeometry = 真 静态网格物体如何碰撞。 | 假 |
bProjTarget | 不影响 bWorldGeometry = 真 静态网格物体如何碰撞。 | 假 |
bWorldGeometry 为假的变量描述
下面是当actor碰撞变量应用于 bWorldGeometry 设置为假的actor时,对actor碰撞变量的更多描述。这种类型的静态网格物体表现的和上文所述静态网格物体一样,但他们有另外一个机会不阻挡物体。首先使用上表查看被讨论的静态网格物体是否阻挡物体。如果不会,更改这些设置。如果根据以上描述您的静态网格物体将发生阻挡,现在您可以使用以下更多的碰撞检测查看是否真的会发生阻挡。设置 | 描述 |
---|---|
bCollideWorld | 此设置既不与有PHYS_None的静态网格物相关,也不与移动者(Mover)相关。然而,如果您的静态网格物体正在运动,您最好将它设置为真。 |
bBlockActors | 试图阻挡其它非玩家actor。必须在 bBlockNonZeroExtentTraces 设置为真时才有效。如果 bUseCylinderCollision 为真,此网格物体是否真的阻挡由圆柱体碰撞决定,或者 bUseCylinderCollision 为假,此静态网格物体碰撞属性在后面解释。 |
bBlockPlayers | 阻挡其它的玩家actor。必须在 bBlockNonZeroExtentTraces 设置为 真时才有效。如果 bUseCylinderCollision 为真,此网格物体是否真的阻挡由圆柱体碰撞决定,或者 bUseCylinderCollision 假,此静态网格物体碰撞属性在后面解释。 |
bProjTarget | 阻挡火箭等抛射体甚至直接射击的子弹。必须在 bBlockNonZeroExtentTraces 设置为真时才有效。如果 bUseCylinderCollision 为真,此网格物体是否真的阻挡由圆柱体碰撞决定,或者 bUseCylinderCollision 为假,此静态网格物体碰撞属性在后面解释。 |
步骤2:静态网格物体碰撞属性
如果对象没有被设置为根据步骤1中描述的actor碰撞属性碰撞,本章讨论的静态网格物体碰撞属性将不被使用。 本章讨论了一些静态网格物体浏览器窗口中的一些属性。它使用图标说明碰撞模型与静态网格物体浏览器中“UseSimple”属性两者间的关系,如下图所示。 每种碰撞模型都有不同的图表;无,类型1与类型2。在每个图表中, UseSimpleKarmaCollision , UseSimpleBoxCollision ,和 UseSimpleLineCollision 所有可能的设置都分别在 Karma , Box ,与 Line 栏中列出。 Karma Objects(Karma对象) 栏指出网格物体将使用什么阻挡Karma物体。 Non-Zero Extent Traces(非零粗细追踪)(例如Pawn运动) 栏指出网格物体将使用什么阻挡被Pawn运动及圆柱体碰撞等使用的非零粗细追踪物体。 Zero Extent Traces(零粗细追踪)(例如武器开火) 栏指出网格物体将使用什么阻挡被武器开火等使用的零粗细追踪物体。无碰撞模型
本图表查看一个没有碰撞模型的静态网格物体如何发生碰撞。默认值 | Karma | Box | Line | Karma Objects(Karma对象) | Non-Zero Extent Traces (非零粗细追踪)(例如Pawn 运动) | Zero Extent Traces (零粗细追踪)(例如武器开火) |
---|---|---|---|---|---|---|
假 | 假 | 假 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 假 | 真 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 真 | 假 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 真 | 真 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
真 | 假 | 假 | 不发生碰撞 | 材质碰撞 | 材质碰撞 | |
真 | 假 | 真 | 不发生碰撞 | 材质碰撞 | 材质碰撞 | |
* | 真 | 真 | 假 | 不发生碰撞 | 材质碰撞 | 材质碰撞 |
真 | 真 | 真 | 不发生碰撞 | 材质碰撞 | 材质碰撞 |
类型 1
本图表查看一个碰撞模型为类型1的静态网格物体如何发生碰撞。使用将Brush(画刷)另存为Collision(碰撞),或者K-DOP可以创建类型1碰撞模型。此类型的碰撞还包括在建模程序中用MCDCX 标签创建的碰撞形状。默认 | Karma | Box | Line | Karma Objects(Karma对象) | Non-Zero Extent Traces (非零粗细追踪)(例如Pawn 运动) | Zero Extent Traces (零粗细追踪)(例如武器开火) |
---|---|---|---|---|---|---|
假 | 假 | 假 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 假 | 真 | 材质碰撞 | 材质碰撞 | 碰撞 w/ 碰撞模型 | |
假 | 真 | 假 | 材质碰撞 | 碰撞 w/ 碰撞模型 | 材质碰撞 | |
假 | 真 | 真 | 材质碰撞 | 碰撞 w/ 碰撞模型 | 碰撞 w/ 碰撞模型 | |
真 | 假 | 假 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 材质碰撞 | |
真 | 假 | 真 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 碰撞 w/ 碰撞模型 | |
* | 真 | 真 | 假 | 碰撞 w/ 碰撞模型 | 碰撞 w/ 碰撞模型 | 材质碰撞 |
真 | 真 | 真 | 碰撞 w/ 碰撞模型 | 碰撞 w/ 碰撞模型 | 碰撞 w/ 碰撞模型 |
类型 2
本图表查看一个碰撞模型为类型2的静态网格物体如何发生碰撞。 类型 2 碰撞模型通过Fit Karma Primitive 或者在建模程序中用MCDBX,MCDSP,或 MCDCY 标签创建的碰撞形状创建。默认 | Karma | Box | Line | Karma Objects(Karma对象) | Non-Zero Extent Traces (非零粗细追踪)(例如Pawn 运动) | Zero Extent Traces (零粗细追踪)(例如武器开火) |
---|---|---|---|---|---|---|
假 | 假 | 假 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 假 | 真 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 真 | 假 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
假 | 真 | 真 | 材质碰撞 | 材质碰撞 | 材质碰撞 | |
真 | 假 | 假 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 材质碰撞 | |
真 | 假 | 真 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 材质碰撞 | |
* | 真 | 真 | 假 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 材质碰撞 |
真 | 真 | 真 | 碰撞 w/ 碰撞模型 | 材质碰撞 | 材质碰撞 |