我有一个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
类似的功能?甚至有可能吗?
答案 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的方法。您可能还需要定义一个阈值,以强制两个位置相等-如果没有此阈值,则可能会导致当前位置在目的地之间来回移动。