Actionscript 3 双重火力和定位问题

Actionscript 3 双重火力和定位问题,actionscript-3,Actionscript 3,我在研究一个太空射手,有个问题: 我的宇宙飞船发射子弹。子弹以船为基准居中。目前所有子弹都是单发子弹 现在我想要的是船上的双重火力。基本上,这意味着我必须加倍拍摄,并将它们放在左右两侧 船的一侧,对吗?但我不知道该怎么做 我的另一个问题是,当我改变子弹的x和y坐标,以便将子弹从飞船中心向左(或向右)移动,并旋转飞船并开火时,我得到了子弹的奇怪行为。在这种情况下,他们从左到中移动,反之亦然,指的是船(在旋转和开火时) 请问-有人知道问题可能在哪里以及如何解决吗?我非常感谢任何帮助。蒂亚!:) 私有

我在研究一个太空射手,有个问题:

我的宇宙飞船发射子弹。子弹以船为基准居中。目前所有子弹都是单发子弹

现在我想要的是船上的双重火力。基本上,这意味着我必须加倍拍摄,并将它们放在左右两侧 船的一侧,对吗?但我不知道该怎么做

我的另一个问题是,当我改变子弹的x和y坐标,以便将子弹从飞船中心向左(或向右)移动,并旋转飞船并开火时,我得到了子弹的奇怪行为。在这种情况下,他们从左到中移动,反之亦然,指的是船(在旋转和开火时)

请问-有人知道问题可能在哪里以及如何解决吗?我非常感谢任何帮助。蒂亚!:)

私有函数自动快照(步骤:编号):void{
ProjectleManager.ProjectlePoolCount=ProjectleManager.ProjectlePool.length-1;
asteroidManager.asteroidCount=asteroidManager.asteroids.length;
如果(ProjectleManager.LastProjectleShot>ProjectleOffset&&ProjectleManager.ProjectlePoolCount>0&&
playerStarted&&asteroidManager.asteroidCount>0&&projNumber=项目编号)
{
player.startDelay=true;
}   
tempSproject.x=(player.point.x)+Math.cos(projectleradans);
temp.y=(player.point.y)+Math.sin(projectleradans);
temp.x=玩家.x+13;
temp.y=player.y+13;
tempSproject.nextX=tempSproject.x;
tempSproject.nextY=tempSproject.y;
tempSprojection.dx=旋转向量列表[player.frame].x;
tempSprojection.dy=旋转向量列表[player.frame].y;
tempProjection.speed=投射速度;
temp.frame=0;
TempSprojection.bitmapData=TempSprojection.animationList[0];
tempProjectleDelay=10;
射弹管理员。射弹。推(射弹);
ProjectleManager.LastProjectleShot=0;
}否则{
ProjectleManager.LastProjectleShot+=步骤;
}
}

自动射击功能在每次调用时只发射一枚射弹。每次调用只有一个
tempallet
按钮可推送到
projectles
列表

因此,一种修复方法是添加一个
tempProjectle2
(在定义
tempProjectle2
的相同位置)作为可以使用的变量。现在在每次调用中,只要弹出足够数量的射弹,射弹池就会耗尽两个

tempProjectile = projectileManager.projectilePool.pop();
tempProjectile2 = projectileManager.projectilePool.pop();
然后相应地调整偏移量

tempProjectile.x
tempProjectile.y 
tempProjectile2.x
tempProjectile2.y
以此类推,然后是代码的其余部分。我唯一不清楚的是为什么tempallet.x和y被赋值两次

tempProjectile.x = (player.point.x) + Math.cos(projectileRadians);
tempProjectile.y = (player.point.y) + Math.sin(projectileRadians);

tempProjectile.x = player.x + 13;
tempProjectile.y = player.y + 13;
我想只有第二双会用

希望其余的函数不应该改变,因为在最后,投射被推到
投射列表中

 projectileManager.projectiles.push(tempProjectile);
 projectileManager.projectiles.push(tempProjectile2);

因此,用于更新和渲染的Anywhere函数应该保持不变,前提是TempSproject没有在程序中的其他地方绑定。

非常感谢!:)我会尽快试试这个。我希望它现在能起作用。你应该上子弹课。所以,您只需在每次需要时实例化一个项目符号。它将控制起点、终点、速度、摩擦力(如果有)和轨迹。这对你来说应该可以简化一切我已经有了子弹课。但目前它只适用于单发射击。不是双重射击,这是我的观点,双重射击只有两发子弹。所以当你有一个2子弹武器时,它会实例化2个子弹类对象。或者制作两种子弹等级,一种是单发子弹,一种是双发子弹
 projectileManager.projectiles.push(tempProjectile);
 projectileManager.projectiles.push(tempProjectile2);