Во-первых, ваш цилиндр нуждается в некотором понятии «вперед» или в его «направлении наведения» (мои слова) в локальном пространстве цилиндра.Для этого вы можете предположить (или визуально увидеть) либо + X, + Y, + Z, -X, -Y или -Z;или вы можете указать собственный произвольный вектор, указывающий в каком-то другом направлении.
Во-вторых, вам нужен вектор, который указывает от центра вашего цилиндра к центру другого объекта (вы уже упоминали об этом).
Теперь вы можете использовать Unity's Quaternion.FromToRotation(...)
, чтобы сгенерировать кватернион, который, применительно к вращению мира вашего цилиндра, будет поворачивать направление наведения в направлении вашего другого объекта.Готово.
Обратите внимание, что если ваш цилиндр больше пары трансформируется вглубь, вам, возможно, придется немного изменить механику этого подхода, чтобы, возможно, учесть преобразования родителей.