[UE4]C++代码操作SplineMesh

原文:https://answers.unrealengine.com/questions/174108/can-you-give-me-an-example-of-splinemeshcomponent-1.html

void ARaceSpline::OnConstruction(const FTransform& Transform)
{
	for (int32 i = 0; i < mSplineComponent->GetNumSplinePoints() - 1; i++)
	{
		USplineMeshComponent* SplineMesh = ConstructObject<USplineMeshComponent>(USplineMeshComponent::StaticClass(), this);

		SplineMesh->bCreatedByConstructionScript = true;
		SplineMesh->SetMobility(EComponentMobility::Movable);
		SplineMesh->AttachParent = mSplineComponent;

		//Set the color!
		UMaterialInstanceDynamic* dynamicMat = UMaterialInstanceDynamic::Create(mSplineMeshMaterial, NULL);
		dynamicMat->SetVectorParameterValue(TEXT("Color"), FLinearColor(mSegments[i].mColor));

		SplineMesh->bCastDynamicShadow = false;
		SplineMesh->SetStaticMesh(mGridMesh);
		SplineMesh->SetMaterial(0, dynamicMat);

		//Width of the mesh 
		SplineMesh->SetStartScale(FVector2D(50, 50));
		SplineMesh->SetEndScale(FVector2D(50, 50));

		FVector pointLocationStart, pointTangentStart, pointLocationEnd, pointTangentEnd;
		mSplineComponent->GetLocalLocationAndTangentAtSplinePoint(i, pointLocationStart, pointTangentStart);
		mSplineComponent->GetLocalLocationAndTangentAtSplinePoint(i + 1, pointLocationEnd, pointTangentEnd);

		SplineMesh->SetStartAndEnd(pointLocationStart, pointTangentStart, pointLocationEnd, pointTangentEnd);
	}

	RegisterAllComponents();
}

猜你喜欢

转载自aigo.iteye.com/blog/2279503