Код: Выделить всё
void UTriggerComponent::TickComponent(float DeltaTime, ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
AActor* Actor = GetAcceptableActor();
if (Actor != nullptr)
{
Actor->DisableComponentsSimulatePhysics();
FVector Location = SceneComponent->GetComponentLocation();
Actor->SetActorLocation(Location);
shouldMove = true;
Mover->SetShouldMove(true);
}
else
{
Mover->SetShouldMove(false);
}
}
Код: Выделить всё
AActor* UTriggerComponent::GetAcceptableActor() const
{
TArray Actors;
GetOverlappingActors(Actors);
for (AActor* Actor : Actors)
{
if (Actor->ActorHasTag(TagName))
{
return Actor;
}
}
return nullptr;
}
Я знайте наверняка, что
- Я использую правильный SceneComponent
- Я также получаю правильного актера, потому что он отключает физика успешно
[*]Изменить SetActorLocation на, LocationAndRotation, Transform и отдельно
[*]Найти, например, WorldTransform/WorldLocation
[*]Вместо получения GetComponentLocation() получить GetComponentToWorld()
< /ул>
Подробнее здесь: https://stackoverflow.com/questions/790 ... orlocation