在蓝图中直接编辑添加Box Collision是这样的:

[UE4]用C++如何创建Box Collision_成员函数

如果用C++,则如下:

UBoxComponent* CollisionMesh = CreateDefaultSubobject<UBoxComponent>(TEXT("TestCollision")); CollisionMesh->SetBoxExtent(FVector(32.f, 32.f, 96.f)); CollisionMesh->bDynamicObstacle = true; CollisionMesh->SetupAttachment(GetRootComponent());




C++创建BoxCollision(BoxComponent)并注册Overlap和Hit事件回调函数

注: ​​使用CreateDefaultSubobject必须在构造函数中​​,如果是其他成员函数,则形式为 UBoxComponent* MyNewBox = NewObject(this); 这里的this是一个Character指针。但这样有个问题:NewObject非构造函数中创建的Box无法及时更新NavMesh,也就是说该box在NavMesh不会被当作障碍物。

其他参考: