// Sets default values AGhost::AGhost() : ActiveModeIndex(0) { // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = false; auto Capsule = GetCapsuleComponent(); Capsule->SetCollisionObjectType(ECC_GHOST); Capsule->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block); Capsule->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Overlap); Capsule->SetCollisionResponseToChannel(ECC_PICKUP, ECollisionResponse::ECR_Ignore); PathFollowingComponent = CreateDefaultSubobject<UPacmanPathFollowingComponent>("PathFollowingComponent"); int32 NumModes = FMath::RandRange(2, 10); Modes.SetNum(NumModes); for (int32 i = 0; i < NumModes; ++i) { Modes[i].Duration = FMath::FRandRange(5.f, 20.f); Modes[i].GhostState = static_cast<EGhostState>(i % 2); } // Last state must be chased Modes.Last().GhostState = EGhostState::Chase; Modes.Last().Duration = 0.f; }
UCECube::UCECube(const class FObjectInitializer& PCIP) : Super(PCIP) { // Размер куба 100*100*100 (по 50 от центра) BoxExtent = FVector(50, 50, 50); // Включаем отслеживание трассировки лучей SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block); SetCollisionEnabled(ECollisionEnabled::Type::QueryAndPhysics); }