Переключение двух позиций оружия || HTML5 холст js - PullRequest
0 голосов
/ 12 марта 2020

Я разрабатываю RPG-игру на холсте javascript. Я пытаюсь поменять или поменять местами два оружия. Рассмотрим два ружья с идентификатором 4,9. идентификатор оружия 4 с игроком. Идентификатор оружия 9 находится в случайном месте на карте. pwid = 4; nwid = 9;

, поэтому я пошел на позицию оружия_9, чтобы поднять его (игрок и оружие_9 столкнулись, и я нажимаю пробел) тоже, при этом условие становится истинным, и оба оружия (pwid, nwid) меняются местами их позиция.

Сейчас

pwid = 9; nwid = 4;

Это проблема, с которой я сталкиваюсь с этим кодом.

Через некоторое время я увидел новое оружие_2. У игрока есть оружие_9.

Когда я хочу выбрать оружие с идентификатором меньше, чем pwid, эти два оружия не меняют свою позицию.

    var img_src="";
    var weapons = [];
   for(var i=0;i<totalWeapons;i++){
	wep_Y = Math.floor(Math.random()*mapH-1);
	wep_X = Math.floor(Math.random()*mapW-1);	
	weap_get(i,wep_X,wep_Y)
   } 
   // push the object in Weapon() constructor
   function weap_get(id,wep_X,wep_Y){
	$.ajax({
		type: "get",
		url: "weapons.json",
		success: function (data) {
			img_src = data[id].src;
			weapons.push(new Weapon(id, img_src, weapon_imgs[id], wep_X, wep_Y));
		}
	});
   }
   function Weapon(id, src, name, pos_X, pos_Y){
	this.id = id;
	this.name = name;
	this.src = src;
	this.dimensions = [player.dimensions[0]*2,player.dimensions[0]];
	this.position = [0,0];
	this.setPos	= function(px, py)
	{
		this.x = Math.floor((px*tileW) + tileW/3);
		this.y = Math.floor((py*tileW) + tileH/3);
		if(this.x < 150){
			this.x = Math.floor((px*tileW) + tileW/3 + 160);
		}if(this.y <100){
			this.y = Math.floor((py*tileW) + tileH/3 + Math.random()*150);	
		}
		this.position = [this.x, this.y];
	}
	this.setPos(pos_X,pos_Y);
   }
    // In loop method
    // check whether the player and the weapon collide or not
    // pwid = present weapon id
    // nwid = new weapon id
    weapons.forEach(weapon => {
             //pick_up_gun=true when keyup = spacebar                                                   
 if(getDistance(player.position[0],player.position[1],weapon.positio
 n[0],weapon.position[1]) <= weapon.dimensions[0] && pick_up_gun){
	nwid = weapon.id;
	if(pwid != nwid){
		temp = pwid;
		pwid = nwid;
		nwid = temp;
		console.log("pwid: "+ pwid + "nwid: " + nwid);
	}			
  }
})
    // the pwid position set to player position so the weapon follow     the player
		weapons[pwid].position[0] = plx;
		weapons[pwid].position[1] = ply;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...