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 ;
}
}