Я разрабатываю 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;