i am creating a shooting game on canvas, i have a projectile object - when a user clicks a new instance of this object is made. and the method to move the projectile is called - projectiles[i].move();
I have added the instances to an array so i can count through it each time to keep each instance moving. however it seems when the method for one instance is called twice that projectiles speed is increased. how can i stop this from happening. here is the code
function fire(){ //trigger projectile object and create new
window.onmousedown = function(e){
trigger = true;
if(e.offsetX){
mouseX = e.offsetX;
mouseY = e.offsetY;
}else
if(e.layerX){
mouseX = e.layerX;
mouseY = e.layerY;
}
projectiles[pC] = new projectile((top_canvas.width/2) + main_x, (top_canvas.height/2) + main_y, mouseX - main_x - (top_canvas.width/2), mouseY - main_y - (top_canvas.height/2), turn);
pC++;
zero = 0;
}
if(trigger == true){
for(i = 0; i<pC; i++){
projectiles[i].move();
}
}
}
//construct bullet object
function projectile(x,y, mx, my, turn){
this.x_speed = 1;
this.y_speed = 1;
this.x = x;
this.y = y;
this.turn = turn;
ctx_2.fillStyle = "#000";
this.move = move;
function move(){
ctx_2.save();
ctx_2.clearRect(0,0,top_canvas.width,top_canvas.height);
ctx_2.translate(this.x, this.y);
ctx_2.rotate(this.turn - 1.570796325);
ctx_2.fillRect(-25, zero+=this.y_speed, 50, 50);
ctx_2.restore();
document.getElementById("info").innerHTML = "pc:" + pC + " i:" + i + " yspeed:" + this.y_speed;
}
}
sorry if i am not clear enough, i will try and explain more if needed
Thanks!