Перемещение по окружности. Математика

Программирование на Юнити.

Перемещение по окружности. Математика

Сообщение mesquein 03 июл 2020, 20:12

Всем привет. Хочу сделать перемещение объекта по окружности с помощью джойстика. Если я правильно понял, смещение сначала нужно нормализовать до единицы и представить в виде прямоугольного треугольника. формулы вроде взял нужные, но ничего не получается
Синтаксис:
Используется csharp
{
    public Vector3 target_move; //смещение джостика

    private float c = 2; //радиус

    void Update()
    {
        Move();    
    }

    private void Move()
    {
        Vector3 vector3 = (target_move.normalized);

        float x = c * Mathf.Cos(vector3.y / vector3.x);

        float y = c * Mathf.Sin(vector3.y / vector3.x);

        transform.Translate(x,y,0) ;
    }
}
mesquein
UNец
 
Сообщения: 4
Зарегистрирован: 21 фев 2020, 19:53

Re: Перемещение по окружности. Математика

Сообщение 1max1 03 июл 2020, 20:36

Синтаксис:
Используется csharp
public class XXX : MonoBehaviour
{
    public float r;

    void Update()
    {
        float angle = Mathf.PingPong(Time.time, Mathf.PI * 2.0f);
        // или float angle = Mathf.Repeat(Time.time, Mathf.PI * 2.0f);

        float x = Mathf.Cos(angle);
        float y = Mathf.Sin(angle);

        transform.position = new Vector3(x, y, 0) * r;
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перемещение по окружности. Математика

Сообщение mesquein 03 июл 2020, 23:10

1max1 писал(а):
Синтаксис:
Используется csharp
public class XXX : MonoBehaviour
{
    public float r;

    void Update()
    {
        float angle = Mathf.PingPong(Time.time, Mathf.PI * 2.0f);
        // или float angle = Mathf.Repeat(Time.time, Mathf.PI * 2.0f);

        float x = Mathf.Cos(angle);
        float y = Mathf.Sin(angle);

        transform.position = new Vector3(x, y, 0) * r;
    }
}

Мне нужно управлять перемещением с помощью джойстика
mesquein
UNец
 
Сообщения: 4
Зарегистрирован: 21 фев 2020, 19:53

Re: Перемещение по окружности. Математика

Сообщение 1max1 04 июл 2020, 00:48

Синтаксис:
Используется csharp
public class XXX : MonoBehaviour
{
    public float r;
    public Vector2 direction;

    void Update()
    {
        float angle = Mathf.Atan2(direction.y, direction.x);

        float x = Mathf.Cos(angle);
        float y = Mathf.Sin(angle);

        transform.position = new Vector3(x, y, 0) * r;
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перемещение по окружности. Математика

Сообщение waruiyume 04 июл 2020, 01:08

Я чёт не пойму, толи вы индусите, толи я совсем тупой... Зачем превращать вектор в угол, а потом превращать его в вектор, так не легче?
transform.position = direction.normalized * r;
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Перемещение по окружности. Математика

Сообщение 1max1 04 июл 2020, 01:37

waruiyume писал(а):Я чёт не пойму, толи вы индусите, толи я совсем тупой... Зачем превращать вектор в угол, а потом превращать его в вектор, так не легче?
transform.position = direction.normalized * r;

Да, так легче :D
Но мы не ищем легких путей))
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12