Страница 1 из 1

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

СообщениеДобавлено: 03 июл 2020, 20:12
mesquein
Всем привет. Хочу сделать перемещение объекта по окружности с помощью джойстика. Если я правильно понял, смещение сначала нужно нормализовать до единицы и представить в виде прямоугольного треугольника. формулы вроде взял нужные, но ничего не получается
Синтаксис:
Используется 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) ;
    }
}

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

СообщениеДобавлено: 03 июл 2020, 20:36
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;
    }
}

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

СообщениеДобавлено: 03 июл 2020, 23:10
mesquein
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;
    }
}

Мне нужно управлять перемещением с помощью джойстика

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

СообщениеДобавлено: 04 июл 2020, 00:48
1max1
Синтаксис:
Используется 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;
    }
}

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

СообщениеДобавлено: 04 июл 2020, 01:08
waruiyume
Я чёт не пойму, толи вы индусите, толи я совсем тупой... Зачем превращать вектор в угол, а потом превращать его в вектор, так не легче?
transform.position = direction.normalized * r;

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

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

Да, так легче :D
Но мы не ищем легких путей))