IgorBee
@IgorBee
JS,VBS,3D.Web с 07.2015

Как на JS асинхроно отслеживать улсовие if else?

Есть условие которое сверяет координаты героя с координатами других объектов(условия столкновения и тд)

Когда герой двигается его координаты меняются изменения чекаю через setInterval котрый каждый 50мс запускает эту проверку ,но у него свои минусы такие как нагрузк на CPU (при большой загруженности функций) так и свои косяки в отработке условий.

if( heroObj.position.left+heroObj.position.right>=rockObjs.position.left &&  //Слево
    heroObj.position.top+heroObj.position.bottom<=200 &&
    heroObj.position.top+heroObj.position.bottom<=280 /* &&
	heroObj.position.left<=rockObjs.position.right*/){
	  heroObj.position.top=120;     console.log("moree") ;
    
    }else{heroObj.position.top=250;  console.log("down");};
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вместо setInterval попробуйте использовать requestAnimationFrame() – callback будет вызываться часто, но в нём проверяйте время от предыдущего «рабочего» срабатывания, чтобы прошло больше 50мс.

Приведённые вами проверки условий не должны быть сколько-нибудь заметными для CPU, если только вы их не для миллиона пар объектов прогоняете каждый раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы