@missbells

Как сделать, чтоб предметы двигались рэндомно?

Добрый день!

Есть код - по двойному клику на картинку она начинает двигаться по прямой вперед и, достигая конца экрана, она "отбивается" от края экрана и двигается назад по той же прямой.

Подскажите. пожалуйста, как усовершенствовать код, чтоб после достижения конца экрана картинка двигалась по рэндомной траектории, а не по той же самой, и "скакала" по экрану бесконечно отбивайся от разных краев, пока не нажмешь на кропку "остановить" (она уже есть в моем коде и работает).

Мой код: https://plnkr.co/edit/QN8U6EBNUbeTvhYAP1J4?p=catalogue
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 1
В данном случае траектория определяется значениями, на которые равномерно увеличиваются elem.style.top и elem.style.left каждые, допустим, 50мс. Первый необходимый вам шаг - прибавить к линейному изменению left параллельное изменение top, и генерировать значения, на которые они должны увеличиваться, случайно. Вот пример: https://jsfiddle.net/1r6s7gq2. Потом прописать функцию генерации траектории во все нужные места. И тут важным является то, что у разных границ экрана некоторые траектории должны отсекаться. Например, при столкновении с нижней границей, элемент не должен иметь возможность установить траекторию, которая поведёт его дальше вниз. Технически для этого придётся проверять с какой именно границей произошло столкновение, и на основе этой информации в Vx и Vy записывать соответствующие промежутки (пример: после столкновения с нижней границей Vx может быть только getRandomBetween(-5, 0), после столкновения с верхней - только getRandomBetween(0, 5)). Ещё не помешает учесть, что если ставить промежутки с участием нуля, Vx и Vy могут одновременно оказаться со скоростью меньше 0.01 и тому подобное, что будет очень медленно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы