我想在鼠标位置上生成actor,但是我需要将它们以四舍五入后的0.5 x和y坐标生成。
我尝试乘以2,四舍五入并除以2,但这似乎不起作用。
这是我的BP的屏幕截图。 BluePrint
我希望我的演员仅在四舍五入到0.5的坐标上生成,而在任何坐标上生成。
答案 0 :(得分:0)
要将向量捕捉到统一网格中,应使用以下公式:
GridPoint = Floor(Point / GridSize) * GridSze;
其中GridSize
是标量,Point
是您的输入。
GridPoint是您的输出。
使用蓝图和内置的数学库函数非常容易。
基本上,将您的位置矢量除以首选的网格大小(Float),然后对其进行四舍五入/整形。然后,乘以网格大小,即可将位置捕捉到最近的网格点。
UE4蓝图示例:
UE4 C ++
// Define Grid Size
float GridSize = 100.0f;
// Get Actor Position
FVector Position = GetActorLocation();
// Calculate Grid Position
FVector TmpPosition = FVector(Position / GridSize);
FVector GridPoint = FVector(FMath::RoundHalfToZero(TmpPosition.X),FMath::RoundHalfToZero(TmpPosition.Y), FMath::RoundHalfToZero(TmpPosition.Z)) * GridSize;
SetActorLocation(GridPoint);