движение unity 2d обьекта в рандомное направление

Рейтинг: 0Ответов: 1Опубликовано: 14.03.2023

нужно чтобы обьект в unity при загрузке сцены начинал двигатся в рандомное направление даже помогите пожалуйста как так можно сделать?

Ответы

▲ 0Принят

Держи несколько примеров. 1 - Движение к цели с векторами. Есть еще метод Translate()

void Update()
{
    // Move our position a step closer to the target.
    var step =  speed * Time.deltaTime; // calculate distance to move
    transform.position = Vector3.MoveTowards(transform.position, target.position, step);

    // Check if the position of the cube and sphere are approximately equal.
    if (Vector3.Distance(transform.position, target.position) < 0.001f)
    {
        // Swap the position of the cylinder.
        target.position *= -1.0f;
    }
}

2 - Через физику, наиболее верный вариант на мой взгляд. Почему через физику лучше. Так же есть свойство velocity.

void FixedUpdate()
{
    if (Input.GetButton("Jump"))
    {
        //Apply a force to this Rigidbody in direction of this GameObjects up axis
        m_Rigidbody.AddForce(transform.up * m_Thrust);
    }
}

Остается написать метод для рандомизации вектора. Например, самое простое:

private Vector3 RandomizeVector()
{
   Vector3 randomPosition = new Vector3(Random.Range(minPosition.x, maxPosition.x), 
   Random.Range(minPosition.y, maxPosition.y), 
   Random.Range(minPosition.z, maxPosition.z) );
    
   return randomPosition;
}

И запускать все это рандомное дело в Start() или Awake() и двигать соответственно в Update(), с физикой в FixedUpdate()