Переместить в повернутое направление [2D] [Unity] - PullRequest
0 голосов
/ 09 марта 2020

У меня есть овца, которая вращается в случайном направлении. Вопрос в том, как заставить его двигаться все время в том направлении, в котором он вращался (вращение меняется каждые 5 секунд). Вот мой код:

using UnityEngine;

public class Sheep : MonoBehaviour
{
    private float SheepMovementSpeed = 30f;
    void Start()
    {
        InvokeRepeating("SheepRandomRotate", Random.Range(3f, 4.9f), 5f);
    }

    void Update()
    {

    }

    public void SheepRandomRotate ()
    {
        var dir = new Vector2(Random.Range(-10, 10), Random.Range(-10, 10));
        var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.AngleAxis(angle + 90, Vector3.forward);
    }
}

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

В обновлении transform.up вверх относительно вращения. Так что, если камера движется вперед, это должно работать для вашего спрайта. transform.Translate (transform.up * Time.deltaTime * SheepMovementSpeed)

0 голосов
/ 09 марта 2020

Используйте тот же Vector3.forward, который вы использовали в своей ротации

transform.position += (Vector3.forward * Time.deltaTime * speed);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...