Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста, предмет должен съедаться игроком но игровой персонаж его просто толкает, код ниже

илья симоненко Ученик (155), на голосовании 1 месяц назад
MyRootComponent = CreateDefaultSubobject<USphereComponent>("RootEeat");
RootComponent = MyRootComponent;

SnakeEeatMesh = ConstructorHelpers::FObjectFinder<UStaticMesh>(TEXT("/Engine/BasicShapes/Sphere")).Object;

class UMaterialInstance* EeatColor;
EeatColor = ConstructorHelpers::FObjectFinderOptional<UMaterialInstance>(TEXT("MaterialInstanceConstant'/Game/SnakeContetent/Materials/InstanceMaterials/M_Metal_Gold_Inst.M_Metal_Gold_Inst'")).Get();

FVector Size = FVector(0.6f, 0.6f, 0.6f);

class UStaticMeshComponent* EeatChank = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Eeat"));
EeatChank->SetStaticMesh(SnakeEeatMesh);
EeatChank->SetRelativeScale3D(Size);
EeatChank->SetRelativeLocation(FVector(0, 0, 0));
EeatChank->SetMaterial(0, EeatColor);
EeatChank->AttachTo(MyRootComponent);
EeatChank->SetSimulatePhysics(true);
}

// Called when the game starts or when spawned
void AMyAppleActor::BeginPlay()
{
Super::BeginPlay();

}

// Called every frame
void AMyAppleActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

CollectEeat();

}


void AMyAppleActor::CollectEeat()
{
TArray<AActor*> CollectedActors;
GetOverlappingActors(CollectedActors);

for (int32 i = 0; i < CollectedActors.Num(); ++i)
{
AMySnakeActor* const Test = Cast<AMySnakeActor>(CollectedActors[i]);

if (Test)
{
Test->VisibleBodyChanck++;
Destroy(true, true);
break;
}
}

}
Голосование за лучший ответ
Sergio 2.1 Оракул (67267) 2 месяца назад
Проблема в том, что твой предмет толкается персонажем, потому что у него включена симуляция физики (SetSimulatePhysics(true)), поэтому нужно ее отключить (SetSimulatePhysics(false)), а также настроить коллизии предмета и персонажа на пересечение: установить для компонента предмета SetCollisionEnabled(ECollisionEnabled::QueryOnly), SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap) и SetGenerateOverlapEvents(true), и убедиться, что у персонажа коллизии настроены аналогично для генерации событий пересечения — тогда при соприкосновении с игроком предмет будет "съедаться", как и должно быть.
Похожие вопросы