在蓝图中直接编辑添加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不会被当作障碍物。
其他参考: