Не могу понять почему не получается запустить вращение объекта вокруг другого[Unity]
Пытаюсь сделать так, чтобы один корабль в игре летал вокруг оси другого. Вот как я делаю это:
//выполняется до приближения объекта на нужное расстояние
angleBetween = Vector3.Angle(transform.position, Target.transform.position);
//после достижения нужного расстояния
angleBetween -= Time.deltaTime;
float x = Target.transform.position.x + 7.5f * Mathf.Cos(angleBetween);
float z = Target.transform.position.z + 7.5f * Mathf.Sin(angleBetween);
В итоге после того, как объект подлетает его положение на оси меняется на другое. Вроде посмотрев не увидел косяка в принимаемых значений и везде функции принимают/возвращают радианы.
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Все намного проще
using UnityEngine;
public class Example : MonoBehaviour
{
//обьект вокруг которого будем крутится
public GameObject target;
void Update()
{
// крутить со скоростью 20 градусов/сек.
transform.RotateAround(target.transform.position, Vector3.up, 20 * Time.deltaTime);
}
}
https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html