如何使鼠标点击位置向量变量四舍五入为 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);