Javascript 我怎样才能使子弹在向右或向左看时不随角色移动?

Javascript 我怎样才能使子弹在向右或向左看时不随角色移动?,javascript,canvas,html5-canvas,gamecanvas,Javascript,Canvas,Html5 Canvas,Gamecanvas,我遇到了一个问题,当我向左或向右射击时,一旦我移动角色,子弹的方向将改变,而它仍在射击。我使用主角图片作为条件,要么向右射击,要么向左射击,但我希望子弹能保持朝着射击方向射击,即使我改变了角色的移动 我是Javascript的初学者,我正在使用canvas为一个大学项目创建一个游戏 if (moveBullet) { let s = heroPic.src.substring(heroPic.src.lastIndexOf("/") + 1); //alert(s);

我遇到了一个问题,当我向左或向右射击时,一旦我移动角色,子弹的方向将改变,而它仍在射击。我使用主角图片作为条件,要么向右射击,要么向左射击,但我希望子弹能保持朝着射击方向射击,即使我改变了角色的移动

我是Javascript的初学者,我正在使用canvas为一个大学项目创建一个游戏

if (moveBullet) {
    let s = heroPic.src.substring(heroPic.src.lastIndexOf("/") + 1);
    //alert(s);

    if (s == "Protagenist_Right_Jet.png" || s == "Protagenist_Stand_Jet.png") {
        bulletX += 20;
    }

    if (s == "Protagenist_Left_Jet.png") {
        bulletX -= 20;
    }

    if (bulletX >= canvas.width) {
        moveBullet = false;
        bulletX = canvas.width + 50
        bulletY = canvas.height + 50;

    }

    if (bulletX <= 0) {
        moveBullet = false;
        bulletX = canvas.width + 50
        bulletY = canvas.height + 50;

    }
}
if(moveBullet){
设s=heroPic.src.substring(heroPic.src.lastIndexOf(“/”)+1);
//警报;
如果(s==“Protagenist_Right_Jet.png”| | s==“Protagenist_Stand_Jet.png”){
x+=20;
}
if(s==“progenist\u Left\u Jet.png”){
bulletX-=20;
}
如果(bulletX>=画布宽度){
moveBullet=false;
bulletX=画布宽度+50
bulletY=画布高度+50;
}
如果(bulletX rockbottom){
heroY=最底层;
}
}
//关键属性
var key=newimage();
key.src=“Key1.png”
var-keyX;
var-keyY;
var-keyCounter=0;
var-keyWidth=30;
var-keyHeight=30;
函数drawKey()
{
ctx.drawImage(键、键X、键Y、键宽度、键高度);
} 
var-killCounter=0;
var电平计数器;
//怪物1属性
var monster1=新图像();
monster1.src=“monster1\u Left.png”
var m1MoveLeft=true;
var-m1X;
变量m1Y;
宽度=50;
高度=50;
函数1()
{
ctx.drawImage(怪物1、m1X、m1Y、m1Width、m1Height);
}
//怪物2属性
var monster2=新图像();
monster2.src=“Monster 2_Right.png”
var m2MoveRight=true;
var m2X;
变量m2Y;
var m2Width=50;
高度=50;
函数2()
{
ctx.drawImage(怪物2、m2X、m2Y、m2Width、m2Height);
}
//怪物3属性
var monster3=新图像();
monster3.src=“monster3\u Right.png”
var m3MoveRight=true;
var-m3X;
变量m3Y;
var m3Width=50;
高度=50;
函数3()
{
ctx.drawImage(怪物3、m3X、m3Y、m3Width、m3Height);
}
//触底
hitboottom=函数(){
var rockbottom=canvas.height-heroHeight;
如果(heroY>rockbottom){
heroY=最底层;
}
}
//项目符号属性
var bulletX;
var bulletY;
常量弹药=[];
var moveBullet=false;
var bulletImage=新图像();
bulletImage.src='Bullet.png';
函数drawBullet(x,y)
{
ctx.drawImage(bulletImage、bulletX、bulletY);
}
//此功能用于检测命中怪物1
函数getDistanceHit1(){
var xRect=(m1X-bulletX);
变量yRect=(m1Y-bulletY);
返回Math.sqrt(Math.pow((xRect),2)+Math.pow((yRect),2));
}
//此功能用于检测命中怪物2
函数getDistanceHit2(){
var xRect=(m2X-bulletX);
变量yRect=(m2Y-bulletY);
返回Math.sqrt(Math.pow((xRect),2)+Math.pow((yRect),2));
}
//此功能用于检测命中怪物3
函数getDistanceHit3(){
var xRect=(m3X-bulletX);
变量yRect=(m3Y-bulletY);
返回Math.sqrt(Math.pow((xRect),2)+Math.pow((yRect),2));
}
//此功能用于检测玩家是否获得钥匙
函数getDistanceKey(){
var xRect=(keyX-heroX);
var yRect=(keyY-heroY);
返回Math.sqrt(Math.pow((xRect),2)+Math.pow((yRect),2));
}
//配置音频文件
var fireAudio=新音频();
fireAudio.src=“fire.mp3”;
var hitAudio=新音频();
hitAudio.src=“颈部捕捉.wav”
//英雄运动
var-rightspressed=false;
var leftPressed=false;
var upPressed=假;
var-downPressed=false;
window.addEventListener(“向下键”,heroControl);
//键盘卷
函数heroControl(事件){//事件处理程序函数
如果(event.keyCode==32){//按下空格键-发射枪
moveBullet=true;
fireAudio.play();
bulletX=heroX+10;
bulletY=heroY+(heroHeight/2);
console.log(“BulletX=“+BulletX”);
}
//38为向上箭头,87为W键
如果(event.keyCode==38 | | event.keyCode==87){//Jump
upPressed=true;
console.log(“HeroY=“+HeroY”);
}
//39是右箭头,68是方向键
如果(event.keyCode==39 | | event.keyCode==68){//向右移动
rightspressed=true;
console.log(“Herox=“+Herox”);
}
...
//Bullet Attribute
  let bulletX;
  let bulletY;
  let bulletVelocity;
...
...
//Keyboard Cotrolls
function heroControl(event) { //event handler function
  if (event.keyCode == 32) { //SPACE BAR PRESSED - fire gun
    moveBullet = true;
    fireAudio.play();


    bulletX = heroX + 10;
    bulletY = heroY + (heroHeight / 2);

    // Initialize bullet velocity
    let s = heroPic.src.substring(heroPic.src.lastIndexOf("/") + 1);
    //alert(s);

    if (s == "Protagenist_Right_Jet.png" || s == "Protagenist_Stand_Jet.png") {
        bulletVelocity = 20;
    } else {
        bulletVelocity = -20;
    }
...
...
if (moveBullet) {
  bulletX += bulletVelocity;

  if (bulletX >= canvas.width) {
...
// create with key: value pairs
let bullet = {
  x: 0,
  y: 0,
  velocity: 0,
};

// Access or set properties using dot notation
bullet.x = heroX + 10;
bullet.y = heroY + (heroHeight / 2);