为BayyteryCollectorCharacter 添加电池拾取功能
声明函数 CollectPickups()
![](https://img.haomeiwen.com/i6852467/21bf4d7c3ac38b7e.png)
为该函数绑定输入
进入UE4 ProjectSetting/Input中 添加动作Collect 快捷键C
![](https://img.haomeiwen.com/i6852467/4def183d0e3fd11c.png)
进入ABatteryCollectorCharacter::SetupPlayerInputComponent 添加
![](https://img.haomeiwen.com/i6852467/ff0c9a3a20f1fde2.png)
编写CollectPickup函数
void ABatteryCollectorCharacter::CollectPickups()
{
TArray<AActor> CollectedActors;
CollectionSphere->GetOverlappingActors(CollectedActors); // 收集所有与SphereComponent碰撞的actor
for (int32 iCollected = 0; iCollected < CollectedActors.Num(); ++iCollected)
{
APickUp const TestPickup = Cast<APickUp>(CollectedActors[iCollected]);
if (TestPickup && !TestPickup->IsPendingKill() && TestPickup->IsActive()) //判断如果该物体是PickUp并且没有被杀死 并且处于激活状态
{
TestPickup->WasCollected();
TestPickup->SetActive(false);
}
}
}
运行程序 打开 debug窗口 当人物走到电池旁边 按下C 会出现log
![](https://img.haomeiwen.com/i6852467/409fcea0ee7cfa91.png)
网友评论