C#以3D维度的速度将对象移动到另一个对象

时间:2018-10-15 08:11:04

标签: c# unity3d 3d

我有一个C#应用程序,可用作Unity Client专用的TCP服务器。

您可以使用以下代码统一将您的对象移向另一个对象:

transform.position = Vector3.MoveTowards(transform.position, Target.transform.position, FlyingSpeed * Time.deltaTime);

我在专用服务器应用程序中同时拥有两个对象的坐标。这是我在服务器应用程序中计算对象之间距离的方法:

public static float CalculateDistance(Position position1, Position position2){
    float deltaX = position1.x - position2.x;
    float deltaY = position1.y - position2.y;
    float deltaZ = position1.z - position2.z;

    float distance = (float)Math.Sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
    Console.WriteLine("Distance is: " + distance);
    return distance;
}

我的问题是: 如何在服务器应用程序中创建与Vectror3.MoveTowards类似的功能?甚至有可能吗?

1 个答案:

答案 0 :(得分:1)

这可以通过代码轻松完成

  Vector3 MoveTowards(Vector3 current, Vector3 to, float step){
       if(current != to)
           return Normalize(to - current) * step;
    }

如果没有定义,则使用规范化。您可以创建一个函数:

Vector3 Normalize(Vector3 normalize){
     return normalize / (normalize.x + normalize.y + normalize.x)
}

这还假设您有一种定义Vector3的方法。您可能还需要定义一个阈值,以强制两个位置相等-如果没有此阈值,则可能会导致当前位置在目的地之间来回移动。