欢迎光临
我们一直在努力

U++ 碰撞预设

碰撞预设
├─ Collision Enabled       是否参与查询或物理模拟
├─ Object Type             自己属于哪一类物体
└─ Collision Responses     遇到不同类型时如何响应
   ├─ Ignore
   ├─ Overlap
   └─ Block

碰撞预设的三个核心部分

一、Collision Enable

Component->SetCollisionEnabled(
ECollisionEnabled::NoCollision
);

决定这个组件是否参与碰撞,以及参与哪一种碰撞系统。

1.No Collision

表示组件完全不参与碰撞,不会参与以下:

  • Line Trace
  • Sweep
  • Overlap 查询
  • 物理模拟
  • 刚体碰撞
  • Hit 检测

它不进入碰撞查询结构和物理模拟结构,所以通常是性能开销最低的设置。


2.Query Only

只参与查询,不参与刚体物理模拟

它可以检测玩家是否进入,但本身不作为一个受力、受重力影响的刚体。

查询主要包括:

  • Line Trace
  • Sphere Trace
  • Box Trace
  • Sweep
  • Overlap
  • 角色移动时的碰撞查询

官方文档将 Query Only 定义为只用于射线、Sweep 和 Overlap 等空间查询,不用于刚体及约束模拟。


3.Physisc Only

只参与物理模拟,不参与普通空间查询。这种模式相对少见,更多用于一些只需要物理模拟、不需要游戏查询的对象或次级运动系统。

它可以参与:

  • 刚体模拟
  • 物理约束
  • 物理接触

但不能用于:

  • Line Trace
  • Sweep 查询
  • Overlap 查询

4.Query and Physics

表示既参与空间查询,也参与物理模拟。适合于可被碰撞检测的带有物理属性的物体。

二、ObjectType

Component->SetCollisionObjectType(ECC_Pawn);

表示该组件再碰撞系统中被归类为什么物体

1.WorldStatic

表示不会移动的世界物体,如地面、墙壁、固定场景静态网格体。

建议将不会移动的 Actor,例如大部分场景静态网格体,设置为WorldStatic。


2.WorldDynamic

表示会通过动画、程序逻辑移动的世界物体,例如:

  • 自动门
  • 升降平台
  • 旋转机关
  • 移动墙壁
  • 触发区域
  • 通过代码移动的方块

3.Pawn

代表玩家、AI或其他Pawn类型的实体,一般来说,ACharacter 的胶囊体会使用 Pawn 类型。

4.PhysicsBody

表示由物理模拟驱动的物体。

  • 可以滚动的球
  • 可以推动的箱子
  • 开启物理模拟的木桶
  • 可掉落道具

5.Vehicle

代表载具

6.Destructible

代表可被破坏的物体。

  • 可破坏墙壁
  • 可碎裂物体
  • Chaos 破坏对象

三、Collision Response

Component->SetCollisionResponseToChannel(
ECC_Pawn,
ECR_Ignore
);

1.Ignore

表示忽略,想过通常是:

  • 不阻挡
  • 不产生 Overlap
  • 不产生 Hit
  • 可以直接穿过

2.Overlap

表示允许穿过,但可以产生重叠事件。

  • 不阻挡
  • 不产生 Overlap
  • 不产生 Hit
  • 可以直接穿过

3.Block

表示阻挡

  • 玩家不能穿过
  • 可能发生阻挡碰撞
  • 可以产生 Hit 事件
  • Sweep 运动时可能停止在碰撞位置

 

赞(0)
未经允许不得转载:171主机测评 » U++ 碰撞预设
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址