Я пытаюсь сделать арку, чтобы отобразить траекторию объекта при его броске. Для этого я использую предсказанный путь снаряда, чтобы сделать это, однако у меня есть несколько проблем. Это не похоже на арку и не очень хорошо предсказывает, где будет упасть объект. Bellow - это код, который я использую для прогнозирования пути, бросьте объект и отображает сплайн: < /p>
. Другое, что я могу, только что я могу понять, что я могу показать, что я могу показать, что я буду. Время, если я забираю другой объект и попытаюсь бросить его, он ничего не покажет. Если я удалю clearThrowarc () из updateThrowarc (), это показывает, но когда я делаю это, это создает много экземпляров сплайна и заполняет экран.>
Я пытаюсь сделать арку, чтобы отобразить траекторию объекта при его броске. Для этого я использую предсказанный путь снаряда, чтобы сделать это, однако у меня есть несколько проблем. Это не похоже на арку и не очень хорошо предсказывает, где будет упасть объект. Bellow - это код, который я использую для прогнозирования пути, бросьте объект и отображает сплайн: < /p> [code]UTP_ThrowableItemComponent::UTP_ThrowableItemComponent() { TrajectorySpline = CreateDefaultSubobject(TEXT("TrajectorySpline")); TrajectorySpline->SetupAttachment(this); TrajectorySpline->SetMobility(EComponentMobility::Movable); }
void UTP_ThrowableItemComponent::StartChargingThrow() { if (Character == nullptr) { UE_LOG(LogTemp, Error, TEXT("Character is null whe trying to throw item")); return; }
void UTP_ThrowableItemComponent::ClearThrowArc() { //TODO: issue where following uses are getting clear without even showing in screen UE_LOG(LogTemp, Warning, TEXT("Call clear")); // Remove all spline meshes TArray AttachedComponents; TrajectorySpline->GetChildrenComponents(false, AttachedComponents);
for (USceneComponent* Component : AttachedComponents) { UE_LOG(LogTemp, Warning, TEXT("Going to try to clear")); if (USplineMeshComponent* SplineMeshComp = Cast(Component)) { UE_LOG(LogTemp, Warning, TEXT("Going to call destroy")); SplineMeshComp->DestroyComponent(); } }
TrajectorySpline->ClearSplinePoints(); }
void UTP_ThrowableItemComponent::UpdateSplineMeshes() { if (!SplineMesh || !SplineMaterial) { return; }
//ClearThrowArc();
int32 NumPoints = TrajectorySpline->GetNumberOfSplinePoints(); UE_LOG(LogTemp, Warning, TEXT("Number of spline points: %d"), NumPoints); for (int i = 0; i < NumPoints - 2; i++) { FVector StartLocation, StartTangent; FVector EndLocation, EndTangent;
SplineMeshComp->SetStartAndEnd(StartLocation, EndLocationLerp, StartTangent, EndTangentLerp); } } } [/code] Вот как он выглядит на экране:
. Другое, что я могу, только что я могу понять, что я могу показать, что я могу показать, что я буду. Время, если я забираю другой объект и попытаюсь бросить его, он ничего не покажет. Если я удалю clearThrowarc () из updateThrowarc (), это показывает, но когда я делаю это, это создает много экземпляров сплайна и заполняет экран.>