Сообщение от рони
|
zlodiak,
а где проверка что танк не по танку едет?
|
всё таки вот сделал проверку чтобы танки не ездили друг по другу:
http://codepen.io/anon/pen/PZGeGb
моё решение совсем неудачное с точки зрения производительности? если я потом ещё сделаю стены, деревья и т.п., то не будет ли игра тормозить от такого количества проверок?
Tank.prototype.checkTankCollision = function(){
self = this;
Tank.tanks.forEach(function(tank){
var x1 = self.x_coord,
x2 = self.x_coord + Tank.tankSize,
y1 = self.y_coord,
y2 = self.y_coord + Tank.tankSize,
x3 = tank.x_coord,
x4 = tank.x_coord + Tank.tankSize,
y3 = tank.y_coord,
y4 = tank.y_coord + Tank.tankSize;
if(self.id != tank.id){
if((y2 >= y3 && y2 <= y4) && ((x2 >= x3 && x2 <= x4) || (x1 <= x4 && x1 >= x3))){
console.log('collision: ' + self.id + ' and ' + tank.id);
self.y_coord -= 10;
tank.x_coord += 10;
};
if((y4 >= y1 && y4 <= y2) && ((x4 >= x1 && x4 <= x2) || (x3 <= x2 && x3 >= x1))){
console.log('collision: ' + self.id + ' and ' + tank.id);
tank.x_coord -= 10;
self.y_coord += 10;
};
if((x2 >= x3 && x2 <= x4) && ((y2 >= y3 && y2 <= y4) || (y1 <= y4 && y1 >= y3))){
console.log('collision: ' + self.id + ' and ' + tank.id);
self.x_coord -= 10;
tank.x_coord += 10;
};
if((x4 >= x1 && x4 <= x2) && ((y4 >= y1 && y4 <= y2) || (y3 <= y2 && y3 >= y1))){
console.log('collision: ' + self.id + ' and ' + tank.id);
tank.x_coord -= 10;
self.x_coord += 10;
};
}
});
}