Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
libcanvas.createLayer( 'ground' )
Какие темы вас интересуют? Если будут желающие — я их опишу.
var lines = [
new Line(10, 10, 20, 20),
...
new Line(710, 10, 720, 20)
];
Ship = atom.Class({
[...]
collision: function (lines) {
for (var i = lines.length; i--;) {
if (lines.distanceTo( this.position ) < this.radius) {
return true;
}
}
return false;
}
});
distanceTo относительно требовательна к ресурсам, потому можно оптимизировать за счёт того, что предварительно проверять, находится ли корабль достаточно низко:Ship = atom.Class({
[...]
collision: function (lines) {
if ( this.position.y > this.minCollisionHeight ) {
return false;
}
for (var i = lines.length; i--;) {
[..]
}
});
minCollisionHeight вычисляется один раз перед началом приложения. Достаточно пройти все отрезки, найти самый высокий Y им приплюсовать к ней радиус корабля:Ship = atom.Class({
[...]
genMinCollisionHeight: function (lines) {
var max = 0;
for (var i = lines.length; i--;) {
max = Math.max( max, lines[i].y );
}
return max + this.radius;
}
});
Как написать ПингПонг при помощи LibCanvas