Показать сообщение отдельно
  #6 (permalink)  
Старый 26.12.2015, 13:16
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

Сообщение от рони Посмотреть сообщение
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;
			};		
		}
	});	
}
Ответить с цитированием