Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在三维空间中以速度将对象移动到另一个对象_C#_Unity3d_3d - Fatal编程技术网

C#在三维空间中以速度将对象移动到另一个对象

C#在三维空间中以速度将对象移动到另一个对象,c#,unity3d,3d,C#,Unity3d,3d,我有一个C#应用程序,用作Unity客户端使用的专用TCP服务器 在unity中,使用以下代码将对象移向另一个对象: transform.position = Vector3.MoveTowards(transform.position, Target.transform.position, FlyingSpeed * Time.deltaTime); 在我的专用服务器应用程序中,我有两个对象的坐标。以下是我在服务器应用程序中计算对象之间距离的方法: public static float C

我有一个C#应用程序,用作Unity客户端使用的专用TCP服务器

在unity中,使用以下代码将对象移向另一个对象:

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.movetoward
的函数?甚至可能吗?

这可以通过代码轻松完成

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

这还假设您有一种方法来定义矢量3。您可能还需要定义一个阈值,强制两个位置相等,否则您可能会在当前位置通过目的地来回移动时产生影响。

在您的服务器应用程序中,您是否有与客户端同步的计时器?如果是,则可以使用此计时器和线性运动算法来模拟运动。您没有同步时间您仍然可以使用相同的算法模拟移动,但最终它们将失去同步(客户端将在位置A,服务器将在位置B,其中A!=B)