예제 #1
0
파일: Ghost.cpp 프로젝트: Xperience8/Pacman
// 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;
}
예제 #2
0
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);
}