Unity - вращать объект вокруг точки в 2D - PullRequest
0 голосов
/ 27 июня 2018

Я работаю над 2D-игрой в Unity, и мне нужно найти способ вращать спрайт вокруг определенной точки. Я знаю, что для 3D-игр в Unity есть встроенная функция transform.RotateAround(), но я не уверен, как добиться 2D-эквивалента. Если кто-нибудь может помочь, ответ будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Если вы изо всех сил пытаетесь разобраться с этими функциями преобразования, есть альтернативный способ сделать это. Просто создайте новый игровой объект в точке, которую вы хотите вращать. Затем сделайте спрайт потомком этого игрового объекта. Когда вы вращаете игровой объект, спрайт должен двигаться вокруг этой точки.

0 голосов
/ 05 октября 2018

На самом деле вы можете использовать GameObject в качестве привязки:

    public GameObject anchor;
    public float velocidad;
    void Start () {
        velocidad = 50f;
    }

    // Update is called once per frame
    void FixedUpdate () {

        transform.RotateAround(anchor.transform.localPosition, Vector3.back, Time.deltaTime*velocidad);
    }
0 голосов
/ 27 июня 2018

Вы можете использовать ту же функцию. transform.RotateAround() принимает Vector3 point, Vector3 axis и float angle в градусах.

точка и угол довольно очевидны, но ось немного меньше. Это по сути направление вращения. В игре Unity2D по умолчанию, где z - ваша глубина (в экран), вам нужно будет вращаться вокруг оси Z: new Vector3(0,0,1) или Vector3.forward.

попробуйте что-то вроде:

Vector3 point = new Vector3(5,0,0);
Vector3 axis = new Vector3(0,0,1);
transform.RotateAround(point, axis, Time.deltaTime * 10);
...