C # переместить объект на другой со скоростью в трехмерном измерении - PullRequest
0 голосов
/ 15 октября 2018

У меня есть приложение C #, которое я использую в качестве выделенного 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.MoveTowards в моем серверном приложении?Это вообще возможно?

1 Ответ

0 голосов
/ 15 октября 2018

Это легко сделать с помощью кода

  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.Вам также может понадобиться определить порог, при котором обе позиции будут равны - без этого вы можете получить эффект, когда текущая позиция перемещается туда и обратно через пункт назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...