如何使鼠标击中点位置矢量变量舍入为0.5?

时间:2019-07-12 18:05:11

标签: unreal-engine4 blueprint

我想在鼠标位置上生成actor,但是我需要将它们以四舍五入后的0.5 x和y坐标生成。

我尝试乘以2,四舍五入并除以2,但这似乎不起作用。

这是我的BP的屏幕截图。 BluePrint

我希望我的演员仅在四舍五入到0.5的坐标上生成,而在任何坐标上生成。

1 个答案:

答案 0 :(得分:0)

要将向量捕捉到统一网格中,应使用以下公式:

GridPoint = Floor(Point / GridSize) * GridSze;

其中GridSize是标量,Point是您的输入。 GridPoint是您的输出。

使用蓝图和内置的数学库函数非常容易。

基本上,将您的位置矢量除以首选的网格大小(Float),然后对其进行四舍五入/整形。然后,乘以网格大小,即可将位置捕捉到最近的网格点。

UE4蓝图示例:

enter image description here

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);