【问题标题】:ActionScript 3 - Initiating A Bullet Changes Direction With CharacterActionScript 3 - 启动子弹会随着角色改变方向
【发布时间】:2012-03-02 18:20:48
【问题描述】:

我正在开发一个横向滚动条,该滚动条的角色每次按下空格键时都会发射子弹,我遇到的问题是将子弹朝角色面对的方向(左或右)移动。

我有一些布尔变量来告诉我我的角色面对的方向:walkingRight | walkLeft,所以如果我的walkingRight == true,我希望子弹移动+=10,而walkingLeft == true,bullet -= 10。

问题是,当我向左开火时,子弹向左移动,但当我向右转时,同样的子弹开始向右移动。

这是一个 AS3 代码的 sn-p(每帧):

if(gamepad.fire2.isPressed){
   // initiate bullet
   var bullet = new Bullet();
   bullet.x = _player.x;
   bullet.y = _player.y;
   /*_boundaries.*/addChild(bullet);
   bullets.push(bullet);
}

for each(var bullet in bullets){
   if(walkingRight || idleRight || jumpingRight){
    bullet.x += 10;
    trace("Bullet - Moving Right");
   }
   else if(walkingLeft || idleLeft || jumpingLeft){
    bullet.x -= 10;
    trace("Bullet - Moving Left");
   }
}

作为一个大学项目,我肯定会感谢任何帮助。

谢谢

【问题讨论】:

  • 创建子弹后,您应该单独存储每个子弹的方向,独立于有关您的主角的任何信息,无论是在自定义“myBulletClass.direction”类或向量/数组中。跨度>

标签: flash move direction bullet


【解决方案1】:

你可以试试这样的:

首先创建这个类:

dynamic class BulletWrapper{
     private var bullet:DisplayObject = null;
     public function BulletWrapper( bullet:DisplayObject ){
         this.bullet = bullet;
     }
     public function getBullet():DisplayObject{
         return this.bullet;
     }
}

然后修改你的代码:

if(gamepad.fire2.isPressed){
  // initiate bullet
   var bullet = new Bullet();
   bullet.x = _player.x;
   bullet.y = _player.y;
   /*_boundaries.*/addChild(bullet);
   var wrapper:BulletWrapper = new BulletWrapper( bullet );
   //storing as much information as related to bullet animation 
   wrapper.walkingStep = 0;
   wrapper.log = "No move";
   //-------------------------------
   if( walkingRight || idleRight || jumpingRight ){
       wrapper.walkingStep = 10;
       wrapper.log = "Bullet - Moving Right";
   }else if( walkingLeft || idleLeft || jumpingLeft ){
       wrapper.walkingStep = -10;
       wrapper.log = "Bullet - Moving Left";
   }
   //--------------------------
   bullets.push(wrapper);
}

for each(var wbullet:BulletWrapper in bullets){
   var bullet = wbullet.getBullet();
   bullet.x += wbullet.walkingStep;
   trace(wbullet.log);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多