gpt4 book ai didi

c++ - 将弹药计数添加到游戏中。

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:49 25 4
gpt4 key购买 nike

一段时间以来,我一直在尝试添加此功能。但是,我似乎忽略了什么。

所以我想添加一个弹药计数,一个类似于 Quake 或 Doom 的弹药计数。弹药拾取器分布在整个 map 上。这把枪最多可以发射 10 次然后停止,但是当我尝试通过与弹药拾取器重叠来重新加载时,静态网格物体没有响应。静态混搭父类是一个蓝图( Actor ),其父类是 ammocrate.cpp(下图),它也是一个 Actor 。这是我目前所做的。

AmmoCrate.cpp

 AAmmoCrate::AAmmoCrate()
{
PrimaryActorTick.bCanEverTick = true;

Count = 10;
SphereRadius = 100.0f;

TouchSphere = CreateDefaultSubobject<USphereComponent>(TEXT("TouchSphereComponent"));
TouchSphere->InitSphereRadius(SphereRadius);
TouchSphere->SetCollisionProfileName("Trigger");
RootComponent = TouchSphere;

StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
StaticMesh->SetupAttachment(RootComponent);

TouchSphere->OnComponentBeginOverlap.AddDynamic(this, &AAmmoCrate::OnOverlapBegin);
}

void AAmmoCrate::OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
AFirstPersonCharacter *FPCharacter = Cast<AFirstPersonCharacter>(OtherActor);
AMannequin* TPCharacter = Cast<AMannequin>(OtherActor);
AGun *Gun = Cast<AGun>(OtherActor);

if (TPCharacter)
{
Gun->AmmoPool = Gun->AmmoPool + Count;

this->Destroy();
}

然后我创建了一个类似于 OnFire() 函数的 OnReload() 函数,我从第一人称角色调用它。

FirstPersonCharacter.cpp

void AFirstPersonCharacter::OnReload()
{
Gun->OnReload();
}

我在 OnReload 函数上设置了一个 UE_LOG 调用,它甚至没有注销弹药箱已经重叠,我在这里错过了什么?

最佳答案

是否在 FPS 角色胶囊和弹药箱碰撞器的碰撞设置中将 GenerateOverlapEvents 检查为 true?两个碰撞器是否都在可以生成重叠事件的适当 channel 中?

关于c++ - 将弹药计数添加到游戏中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com