Выберает только последний объект.
В общем ссылка на песочницу.. (Ссылка)
Функция "draw", коллизия работает только на последний созданный элемент, хотя вроде бы цикл есть для них всех и должно всех проверять. Подскажите что я не так делаю. |
if не создает отдельную область видимости
переменная i в разных циклах это одна и та же переменная. |
Цитата:
|
MallSerg,
:-? хотелось бы понять и вас :) |
Цитата:
А вот про if не понял... |
Цитата:
просто невнимательно на код посмотрел проблема похоже не в этом |
Вообще смысл только в этих строчках
// enemy var enemys = [ new Enemy(20, 20, 1, '#00f', [10, 10], [200, 20]), new Enemy(20, 20, 1, '#0f0', [20, 90], [300, 120]), new Enemy(20, 20, 1, '#acacac', [50, 170], [150,190]), new Enemy(20, 20, 1, '#5577cc', [30, 290], [30, 290]), new Enemy(100, 10, 1, '#444', [30, 410], [30, 410]) ] // is_collis var is_collis = function (a, b) { return !( a.pos[0] + a.width <= b.pos[0] || b.pos[0] + b.width <= a.pos[0] || a.pos[1] + a.height <= b.pos[1] || b.pos[1] + b.height <= a.pos[1] ); }; // Draw var draw = function () { ctx.clearRect(0, 0, canv.width, canv.height); for(var i = 0; i < enemys.length; i += 1){ if( !is_collis(player, enemys[i]) ){ moveToDirect(player); } } } Есть объекты enemy и player, у них есть свойства, но в общем это не важно) Смысл в том что при проверке "is_collis" оно обнаруживает только последнего enemy, хотя цикл перебора всех enemy добавил... |
Хотя может и не в этом проблема.. так как когда player наступает на другие предметы он их проходит но замедляется...
|
Выходит так что первый объект player пробегает насквозь быстро, на второй медленнее, на следующий еще медленнее и так пока не дойдет до последнего, на нем вообще не проходит.
|
Часовой пояс GMT +3, время: 08:19. |