Выберает только последний объект.
В общем ссылка на песочницу.. (Ссылка)
Функция "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, время: 18:05. |