Javascript 朝最后一个位置拍摄html5 canvas js

Javascript 朝最后一个位置拍摄html5 canvas js,javascript,html,sprite,angle,bullet,Javascript,Html,Sprite,Angle,Bullet,我想做一个游戏,子弹射向目标的最后一个位置。除非目标不动,否则子弹应该不会击中目标。每个子弹应使用最近计算的角度沿单个方向连续移动 for (var z=0; z < this.bullets.length; z++){ var by = enemy1.y - posY; var bx = enemy1.x - posX; var fangle = Math.atan2 (by, bx); velocitiesx[z] = Math.cos(fangle) * 1;

我想做一个游戏,子弹射向目标的最后一个位置。除非目标不动,否则子弹应该不会击中目标。每个子弹应使用最近计算的角度沿单个方向连续移动

for (var z=0; z < this.bullets.length; z++){  

var by = enemy1.y - posY;  
var bx = enemy1.x - posX;  
var fangle = Math.atan2 (by, bx);  


velocitiesx[z] = Math.cos(fangle) * 1;  
velocitiesy[z] = Math.sin(fangle) * 1;  


bullets[z].x += velocitiesx[z] ;  
bullets[z].y += velocitiesy[z] ;   
}
} }

函数movebullets(){
对于(var z=0;z
计算了角度和velxf和velyf着火……并按照kokodoko的建议制作了箱子的velxf和velyf属性

bullets[bullets.length] = new Box({
  x: posX  ,
  y: posY ,
  width: 4,
  height: 4,
  color: '#7FFF00',
  velxb: velxf,
  velyb: velyf,
});




function movebullets(){
for (var z=0; z < this.bullets.length; z++){

bullets[z].x += bullets[z].velxb ;
bullets[z].y += bullets[z].velyb ; 
}         
}
项目符号[项目符号.长度]=新框({
x:posX,
y:波西,
宽度:4,
身高:4,
颜色:“#7FFF00”,
velxb:velxf,
velyb:velyf,
});
函数movebullets(){
对于(var z=0;z
您不断循环所有项目符号以更新其角度,但只需更新其位置即可。只有在发射子弹时才应计算角度,因为它仍会稍微偏离非移动目标。如果射手向上移动,则子弹太低。如果射手向下移动,子弹会飞得太高。子弹需要知道自己的
velxf
velyf
,这样你就可以把它作为
Box({velx,vely})
的一个属性。嘿,kokodoko,谢谢你的帮助!我觉得我永远不会看到这一点,但这是有道理的。将发布相关更改。
function movebullets(){
for (var z=0; z < this.bullets.length; z++){
bullets[z].x += velxf ;
bullets[z].y += velyf ; 
}    
}
bullets[bullets.length] = new Box({
  x: posX  ,
  y: posY ,
  width: 4,
  height: 4,
  color: '#7FFF00',
  velxb: velxf,
  velyb: velyf,
});




function movebullets(){
for (var z=0; z < this.bullets.length; z++){

bullets[z].x += bullets[z].velxb ;
bullets[z].y += bullets[z].velyb ; 
}         
}