如何使鼠标点击位置向量变量四舍五入为 0.5?
How can I make the mouse hit point location vector variables be rounded to 0.5?
我想在鼠标位置生成演员,但我需要它们在四舍五入到 0.5 的 x 和 y 坐标上生成。
我试过乘以2、四舍五入和除以2,但似乎不起作用。
这是我BP的截图。
BluePrint
我希望我的 actors 仅在四舍五入到 0.5 坐标上生成,但它们在任何坐标上生成。
要将矢量对齐到统一网格,您应该使用以下公式:
GridPoint = Floor(Point / GridSize) * GridSze;
其中 GridSize
是标量,Point
是您的输入。
GridPoint 是您的输出。
使用蓝图和内置数学库函数非常容易。
基本上只需将您的位置向量除以首选网格大小 (Float),然后 round/floor 它。然后乘以网格大小,您的位置就会捕捉到最近的网格点。
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);
我想在鼠标位置生成演员,但我需要它们在四舍五入到 0.5 的 x 和 y 坐标上生成。
我试过乘以2、四舍五入和除以2,但似乎不起作用。
这是我BP的截图。 BluePrint
我希望我的 actors 仅在四舍五入到 0.5 坐标上生成,但它们在任何坐标上生成。
要将矢量对齐到统一网格,您应该使用以下公式:
GridPoint = Floor(Point / GridSize) * GridSze;
其中 GridSize
是标量,Point
是您的输入。
GridPoint 是您的输出。
使用蓝图和内置数学库函数非常容易。
基本上只需将您的位置向量除以首选网格大小 (Float),然后 round/floor 它。然后乘以网格大小,您的位置就会捕捉到最近的网格点。
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);