collision碰撞
- Query only 仅查询。包括请求,扫描和重叠,扫描两个物体知否存在重叠
- Physics Only 仅物理。重力,反弹等物理计算
- 都开启
按下“~”输入show collision可以查看碰撞
给石块添加碰撞,Query可以阻挡人物过去,Physics阻挡不了,但是打开模拟物理,人可以把石头踢动。对于暗门,可以让它忽略pawn但是摄像机不会穿过门
Overlap重叠事件
球体碰撞重叠,回到Item.cpp和h,创建一个球体组件,绑定到root
在PrimitiveComponent.h找到overlap的相关参数,只要我们创建的函数绑定的名字正确就可以调用
- FComponentBeginOverlapSignature ,UPrimitiveComponent 是开始重叠的签名,是类型
- OnComponentBeginOverlap 委托的名字,接下来才是输入的6个参数
- UPrimitiveComponent*, OverlappedComponent
- AActor*, OtherActor
- UPrimitiveComponent*, OtherComp
- int32, OtherBodyIndex
- bool, bFromSweep
- const FHitResult &, SweepResult
创建函数复制参数,直接复制,删除逗号
使用AddDynamic绑定函数,让发生重叠时,让重叠的参数传到函数
重叠时打印名字
EndOverlap和上边的一样
查询一个函数的具体步骤可以如下
- 查看 PrimitiveComponent.h
- 搜索 OnComponentEndOverlap 查看委托的声明
- 找出回调的函数签名
- 在 Item 类中创建回调
- 使用 AddDynamic 在 Item 的 BeginPlay 中绑定回调函数
- 测试结束重叠!在屏幕中打印一条信息