Як зробити lookat з обертанням по одній осі

newRotation = Quaternion. LookRotation # 40; transform. position - target. position # 41; ;


А давай згадаємо непомнюкакой клас, де ми вчили вектора. Щоб знайти вектор, потрібно від координати кінця відняти координату початку. У тебе вектор повинен бути спрямований від гармати до цілі. Тобто гармата - початок, а мета - кінець. А у тебе вийшло навпаки.
А ще, наскільки я знаю, Vector3.x - read only.
Спробуй ось так:

void Update # 40; # 41;
# 123;
Quaternion endRotation = Quaternion. LookRotation # 40; target. position - transform. position # 41; ;
transform. rotation = Quaternion. Slerp # 40; transform. rotation. endRotation, Time. deltaTime * 8 # 41; ;
# 125;


Записав, перевірив. Рівність виконання підтверджую.

Simmilliar писал (а): Це повинно переводити кватерніон в градуси
Це - навпаки


Спасиб.
Обертання курсора навколо гравця запив шляхом виведення в зошиті рівняння перетину прямої (по 2 точкам) і окружності (з центром в першій точці) Половину посокращал, зводив в квадрат за допомогою множення змінних на самих себе в результаті вийшла така дика штука. Зате работае на ура.

if # 40; target. transform. position. z> RotationController. transform. position. z # 41;
# 123;
zb = Mathf. Sqrt # 40; r * r * # 40; target. transform. position. z - RotationController. transform. position. z # 41; * # 40; target. transform. position. z - RotationController. transform. position. z # 41; / # 40; # 40; target. transform. position. y - RotationController. transform. position. y # 41; * # 40; target. transform. position. y - RotationController. transform. position. y # 41; + # 40; target. transform. position. z - RotationController. transform. position. z # 41; * # 40; target. transform. position. z - RotationController. transform. position. z # 41; # 41; # 41; + RotationController. transform. position. z;

if # 40; target. transform. position. z # 123;
zb = - Mathf. Sqrt # 40; r * r * # 40; target. transform. position. z - RotationController. transform. position. z # 41; * # 40; target. transform. position. z - RotationController. transform. position. z # 41; / # 40; # 40; target. transform. position. y - RotationController. transform. position. y # 41; * # 40; target. transform. position. y - RotationController. transform. position. y # 41; + # 40; target. transform. position. z - RotationController. transform. position. z # 41; * # 40; target. transform. position. z - RotationController. transform. position. z # 41; # 41; # 41; + RotationController. transform. position. z;

if # 40; target. transform. position. y> RotationController. transform. position. y # 41;
# 123;
yb = Mathf. Sqrt # 40; r * r - # 40; zb - RotationController. transform. position. z # 41; * # 40; zb - RotationController. transform. position. z # 41; # 41; + RotationController. transform. position. y;
# 125;

if # 40; target. transform. position. y # 123;
yb = - Mathf. Sqrt # 40; r * r - # 40; zb - RotationController. transform. position. z # 41; * # 40; zb - RotationController. transform. position. z # 41; # 41; + RotationController. transform. position. y;
# 125;

Director. transform. position = new Vector3 # 40; 0, yb, zb # 41; ;
Director. transform. LookAt # 40; RotationController. transform. position # 41; ;

Прихований текст: показати

Ще б хто lerp'ом навчив користуватися, щоб уповільнювати снаряд. Ну в баню цей ваш рігідбаді

Схожі статті