Рандомное перемещение объекта по оси У

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Рандомное перемещение объекта по оси У

Сообщение Otselot 17 янв 2021, 13:44

Здраствуйте! Как реализовать рандомное перемещение объекта по оси У, в заданных пределах minY=-3.5, maxY=3.5, через равный или тоже рандомный промежуток времени, который например составляет от 2 до 5 секунд?
Пробовал сам но ничего не работает.
Синтаксис:
Используется csharp
private Vector2 targetPos;

    public float Yincrement;

    public float speed;
    public float maxHeight;
    public float minHeight;

    public GameObject Boss;



    void Update()
    {
        targetPos.y = Random.Range(-3.5f, 3.5f);
    }
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение Saltant 17 янв 2021, 15:58

Update срабатывает каждый фрейм. Для ожидания используй корутины https://habr.com/ru/post/216185/
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 17 янв 2021, 17:01

Saltant писал(а):Update срабатывает каждый фрейм. Для ожидания используй корутины https://habr.com/ru/post/216185/

Спасибо, попробую разобраться.
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 17 янв 2021, 17:04

Пробовал так и тоже ничего не двигается.
Синтаксис:
Используется csharp
public float speed;
   
    void Start()
    {
        speed = Random.Range(0.01f, 0.1f);
    }

    void Update()
    {
        transform.Translate(0, speed * Time.deltaTime, 0);
        if (transform.position.y > 3.5f)
        {
            speed = -speed;
        }
        if (transform.position.y < -3.5f)
        {
            speed = Random.Range(0.01f, 0.1f);
        }
    }
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение 1max1 17 янв 2021, 18:37

Он не может не двигаться, ты плохо смотришь значит либо скрипта нет на объекте, либо скорость слишком маленькая. И раз уж ты используешь локальный транслит, то используй локальную позицию transform.localPosition.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 17 янв 2021, 18:55

1max1 писал(а):Он не может не двигаться, ты плохо смотришь значит либо скрипта нет на объекте, либо скорость слишком маленькая. И раз уж ты используешь локальный транслит, то используй локальную позицию transform.localPosition.

Ты прав на счет скорости. Перепроверил скорость, поставил значение больше и он начал перемещаться. Изначально думал что с такой скоростью будет очень быстро перемещаться, поэтому и ставил диапазон такой маленький. Спасибо за подсказку, оказалась ерундовая проблема.)
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 22 фев 2021, 17:58

при использовании этого кода было замечено что объект бывает застряет в верхней части экрана вылазя за границу 3,5 и не может опуститься обратно, будто его что т там держит.... внизу такого не происходит. Что это могло бы быть?
Синтаксис:
Используется csharp
public float speed;
   
    void Start()
    {
        speed = Random.Range(2f, 7f);
    }

    void Update()
    {
        transform.Translate(0, speed * Time.deltaTime, 0);
        if (transform.position.y > 3.5f)
        {
            speed = -speed;
        }
        if (transform.position.y < -3.5f)
        {
            speed = Random.Range(2f, 7f);
        }
    }
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение Xtir 22 фев 2021, 19:49

Синтаксис:
Используется csharp
if (transform.position.y > 3.5f)
        {
            speed = -speed;
        }

Минус на минус даёт плюс. Возможно он не успевает опуститься, а ты ему снова назначаешь минусовую скорость которая даёт уже плюс.
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 22 фев 2021, 23:06

Xtir писал(а):
Синтаксис:
Используется csharp
if (transform.position.y > 3.5f)
        {
            speed = -speed;
        }

Минус на минус даёт плюс. Возможно он не успевает опуститься, а ты ему снова назначаешь минусовую скорость которая даёт уже плюс.

Хм, а как тогда это все правильно прописать?
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35

Re: Рандомное перемещение объекта по оси У

Сообщение 1max1 27 фев 2021, 20:22

Синтаксис:
Используется csharp
    void Update()
    {
        transform.Translate(0, speed * Time.deltaTime, 0);
        if (transform.position.y > 3.5f)
        {
            transform.position = new Vector3(transform.position.x, 3.5f, transform.position.z);
            speed = -speed;
        }
        if (transform.position.y < -3.5f)
        {
            transform.position = new Vector3(transform.position.x, -3.5f, transform.position.z);
            speed = Random.Range(2f, 7f);
        }
    }
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Рандомное перемещение объекта по оси У

Сообщение Otselot 28 фев 2021, 01:59

1max1 писал(а):
Синтаксис:
Используется csharp
    void Update()
    {
        transform.Translate(0, speed * Time.deltaTime, 0);
        if (transform.position.y > 3.5f)
        {
            transform.position = new Vector3(transform.position.x, 3.5f, transform.position.z);
            speed = -speed;
        }
        if (transform.position.y < -3.5f)
        {
            transform.position = new Vector3(transform.position.x, -3.5f, transform.position.z);
            speed = Random.Range(2f, 7f);
        }
    }

Спасибо)
Otselot
UNец
 
Сообщения: 27
Зарегистрирован: 17 янв 2021, 13:35


Вернуться в Почемучка

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

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