Produktion_Digitaler_Medien/Source/BuildingEscape/MovingActor.cpp

78 lines
1.8 KiB
C++
Raw Normal View History

2021-01-19 15:25:56 +01:00
#include "MovingActor.h"
#include "Components/AudioComponent.h"
#include "Kismet/GameplayStatics.h"
UMovingActor::UMovingActor()
{
PrimaryComponentTick.bCanEverTick = true;
}
void UMovingActor::BeginPlay()
{
Super::BeginPlay();
}
void UMovingActor::Move()
{
targetLocation = GetOwner()->GetActorLocation();
if (Negative)
{
targetLocation.Y += MovementTarget;
tempLocation = FVector(0.0f, MovementSpeed, 0.0f);
}
2021-02-02 14:09:40 +01:00
if(!Negative)
{
targetLocation.X += MovementTarget;
tempLocation = FVector(MovementSpeed, 0.0f, 0.0f);
}
if(Up)
{
targetLocation.Z += MovementTarget;
tempLocation = FVector(0.0f, 0.0f, MovementSpeed);
}
2021-01-19 15:25:56 +01:00
this->targetLocation = targetLocation;
this->moving = true;
2021-02-02 14:09:40 +01:00
UE_LOG(LogTemp, Warning, TEXT("%f %f %f"), targetLocation.X, targetLocation.Y, targetLocation.Z)
UE_LOG(LogTemp, Warning, TEXT("%f"), MovementSpeed)
2021-01-19 15:25:56 +01:00
TArray<UAudioComponent*> Audios;
GetOwner()->GetComponents<UAudioComponent>(Audios);
if (Audios.Num() == 0) return;
if (soundHasBeenPlayed) return;
for (auto Audio : Audios)
{
if (Audio->ComponentHasTag("location"))
{
UGameplayStatics::PlaySoundAtLocation(GetOwner(), Audio->Sound, GetOwner()->GetActorLocation(),
GetOwner()->GetActorRotation(), 1, 1, 0,
Audio->AttenuationSettings, nullptr, GetOwner());
}
else
{
Audio->Play();
}
}
soundHasBeenPlayed = true;
}
void UMovingActor::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
if (moving)
{
FVector Location = GetOwner()->GetActorLocation();
if (Location.Equals(targetLocation, 1.0f))
{
moving = false;
}
else
GetOwner()->SetActorLocation(Location + tempLocation);
}
}