C#在三维空间中以速度将对象移动到另一个对象
我有一个C#应用程序,用作Unity客户端使用的专用TCP服务器 在unity中,使用以下代码将对象移向另一个对象: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
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)