当前位置: 首页 > 工具软件 > collision > 使用案例 >

【UE】Collision笔记

丁承德
2023-12-01

参考:

1.UE4碰撞规则详解
2.官方碰撞响应参考

碰撞规则

  • 拥有Collision属性的实体可以产生碰撞
  • 实体有自身的碰撞通道类型,通道类别如下:
【ObjectType】
{
    //应用于不移动的任意Actor。静态网格体Actor是类型可能为"WorldStatic"的Actor的良好示例
    WorldStatic,
    
    //WorldDynamic用于受到动画或代码的影响而移动的Actor类型;运动学。电梯和门是WorldDynamic Actor的典型例子
    WorldDynamic,

	//任何由玩家控制的实体的类型都应为Pawn。玩家角色是"对象类型(Object Type)"应为"Pawn"的Actor的典型例子
    Pawn,

	//由于物理模拟而移动的任意Actor	
    Visibility,

	//此为载具的默认类型。
    Vehicle,

	//此为可破坏物网格体的默认类型。
    Destructible,

	Camera,
    PhysicsBody,
    EngineTraceChannel1,
   ...
   
    OverlapAll_Deprecated,
    MAX,
} 

设置碰撞通道类型可以用->SetCollisionObjectType()

  • 每个实体还有碰撞预设来对应是否对其他的碰撞通道类型实体产生碰撞,类别如下
【Collision Presets】
{
	//使用已在静态网格体编辑器中应用给静态网格体的设置。
	默认(Default)
		
	//为此实例设置所有自定义碰撞设置。
	自定义...(Custom...)
		
	//无碰撞。
	NoCollision
		
	//在默认情况下阻挡所有Actor的WorldStatic对象。所有新自定义信道都将使用其本身的默认响应。
	BlockAll
		
	//在默认情况下与所有Actor重叠的WorldStatic对象。所有新自定义信道都将使用其本身的默认响应。
	OverlapAll
		
	//在默认情况下阻挡所有Actor的WorldDynamic对象。所有新自定义信道都将使用其本身的默认响应。
	BlockAllDynamic
	
	//在默认情况下与所有Actor重叠的WorldDynamic对象。所有新自定义信道都将使用其本身的默认响应。
	OverlapAllDynamic
		
	//忽略Pawn和载具的WorldDynamic对象。所有其他信道都将设置为默认值。
	IngoreOnlyPawn
		
	//与Pawn、摄像机和载具重叠的WorldDynamic对象。所有其他信道都将设置为默认值。
	OverlapOnlyPawn
		
	//Pawn对象。可用于任意可操作角色或AI的胶囊体。
	Pawn
		
	//忽略除WorldStatic以外的所有其他Actor的Pawn对象。
	Spectator
		
	//用于角色网格体的Pawn对象。所有其他信道都将设置为默认值。
	CharacterMesh
		
	//模拟Actor。
	PhysicsActor
		
	//可破坏物Actor。
	Destructible
		
	//不可见的WorldStatic对象。
	InvisibleWall
		
	//不可见的WorldDynamic对象。
	InvisibleWallDynamic
		
	//用于触发器的WorldDynamic对象。所有其他信道都将设置为默认值。
	Trigger
		
	//模拟骨架网格体组件。所有其他信道都将设置为默认值。
	Ragdoll
		
	//阻挡载具(Vehicle)、WorldStatic和WorldDynamic的载具对象。所有其他信道都将设置为默认值。
	Vehicle
		
	//在默认情况下与所有Actor重叠的WorldStatic对象。所有新自定义信道都将使用其本身的默认响应。
	UI
}

设置碰撞预设可以用SetCollisionProfileName(TEXT()) 这里不懂为什么传递进去的是一个字符串

  • 启用碰撞是是否碰撞的总开关,类型如下
【Collision Enabled】
{
	//在物理引擎中此形体将不具有任何表示。不可用于空间查询(光线投射、Sweep@@@、重叠)或模拟(刚体、约束)。此设置可提供最佳性能,尤其是对于移动对象。
	无碰撞(NoCollision)

	//此形体仅可用于空间查询(光线投射、Sweep@@@和重叠)。不可用于模拟(刚体、约束)。对于角色运动和不需要物理模拟的对象,此设置非常有用。通过缩小物理模拟树中的数据来实现一些性能提升。
	仅查询(QueryOnly)
	
	//此形体仅可用于物理模拟(刚体、约束)。不可用于空间查询(光线投射、Sweep@@@、重叠)。对于角色上不需要按骨骼进行检测的模拟次级运动,此设置非常有用。通过缩小查询树中的数据来实现一些性能提升。
	仅物理(PhysicsOnly)
	
	//此形体可用于空间查询(光线投射、Sweep@@@、重叠)和模拟(刚体、约束)。
	启用碰撞(CollisionEnabled)
}

SetCollisionEnabled()

碰撞设置

启用碰撞的类型

SetCollisionEnabled()   
ECollisionEnabled::NoCollision  没有碰撞
ECollisionEnabled::PhysicsOnly  只有物理
ECollisionEnabled::QueryAndPhysics 查询和物理
ECollisionEnabled::QueryOnly   只有查询
ECollisionEnabled::Type目前理解为自定义

设置所有通道的冲突响应

SetCollisionResponseToChannels()
ECollisionResponse::ECR_Overlap 重叠,
ECollisionResponse:ECR_Block 物块,
ECollisionResponse:ECR_Ignore 忽略, 
ECollisionResponse:ECR_MAX ?

SetCollisionResponseToChannel(ECC_Pawn, ECR_Ignore);设置碰撞通道响应指向人物

Updating…

 类似资料: