Unity 5 рух по колу через поворот - stack overflow російською

Згадуємо геометрію. Рівняння кола має вигляд:

a, b - координати центру кола

R - радіус кола

Рівняння кола радіуса R з центром на початку координат:

Це допоможе нам дізнатися змінні в іншому поданні окружності: в параметричному рівнянні:

в центрі координат:

Бачимо знайомі дані і ще додаткову: alpha. Думаю зрозуміло, що це кут. Міняємо кут альфа і отримуємо рух по колу.

Все це переносимо в Unity.

Припустимо в якийсь момент часу потрібно, щоб об'єкт почав рух по колу, а значить потрібно змінювати поступово кут і передавати значення в координати. Кут можна змінювати наприклад в Update. який буде кожен фрейм викликатися. Тоді вийде проста формула:

Коли потрібно припинити рух по колу, виставляємо isCircle в false і Обнуляємо кут angle = 0;

Для руху навколо якогось центру не забуваємо додати цю умову в координати. Наприклад центр з координатами 1, 1.5; Формула буде наприклад така:

За годинниковою або проти годинникової?

Тут все банально просто. Потрібно одну з координат помножити додатково на -1. Якщо помножити X, то рух піде так, як ніби перебуваєте на позначці 180 °

Unity 5 рух по колу через поворот - stack overflow російською

Якщо помножити Y, то з позначки 0 °:

Unity 5 рух по колу через поворот - stack overflow російською

Якщо я нічого не плутаю))

Ось банальне і в дуже сирому вигляді рух тіла вперед, а при зміні параметра isCircle в true летить проти годинникової стрілки рівно з того місця, де знаходиться (для цього у формулі ще один параметр new Vector2 (radius, 0) для компенсації напрямку руху).

Ну і з приводу руху по синусоїді. Тут трохи по-іншому. За однією осі ми просто рухаємося, а по інший, так би мовити "Віхляєв".

Я спробую просто написати дві формули, спробуйте розібратися з ними самі)))

1) Рух вперед, "вихляет" вниз-вгору:

Схожі статті