Lookat()
является идеальным решением этой проблемы.
Учитывая, что в следующем случае меч имеет опору и родителя , который способен двигаться независимо и 1012 * цель *. См. Пример:
![Example](https://i.stack.imgur.com/ZxOP7.png)
В сводную таблицу добавьте очень простой скрипт, который будет гарантировать, что сводная точка будет смотреть на цель. Также убедитесь, что меч движется вперед по оси + Z :
![Positive Z](https://i.stack.imgur.com/DlDVX.png)
В сценарии на разворотенапишите следующее:
//Target object
public Transform target;
//Pivot object (in this case the object the script is attached to)
public Transform pivot;
//Might want to use Update() instead
private void FixedUpdate()
{
//Simply look at the target
pivot.LookAt(target);
}
Меч должен указывать на начало независимо от того, вращается или переводит родительский объект.
Кроме того, в вашем сценарии:
Vector3 targetVector = target.position - transform.position;
float speed = (targetVector.magnitude) * 5;
Vector3 directionVector = targetVector.normalized * speed;
Можно упростить до:
Vector3 targetVector = target.position - transform.position;
float speed = 5.0f;
Vector3 directionVector = targetVector * speed;
Поскольку нормализация изменяет величину вектора на 1, следовательно, умножение на истинную величину сделает его таким, чтобы оно никогда не нормализовалось. Как говорит @ Draco18s, он не обеспечит постоянного движения.