Actionscript 3 加里·罗森茨威格';第七章如何在太空岩石中改变导弹方向;书中写道:;“动作脚本3.0游戏编程大学”;

Actionscript 3 加里·罗森茨威格';第七章如何在太空岩石中改变导弹方向;书中写道:;“动作脚本3.0游戏编程大学”;,actionscript-3,Actionscript 3,我一直在尝试使用Gary Rosenzweig的《动作脚本3.0游戏编程大学》一书第7章中使用的太空岩石的源代码,他用球避开导弹方向。然而,我正在努力使游戏更有创意。我遇到的问题是,如果你设计了一个定向的导弹精灵,即子弹,那么源代码将始终垂直发射子弹。它不会使子弹旋转到与船成一条直线。不幸的是,我被难倒了。下面是用于创建导弹并设置其动画的代码 //导弹 // create a new Missile public function newMissile() { /

我一直在尝试使用Gary Rosenzweig的《动作脚本3.0游戏编程大学》一书第7章中使用的太空岩石的源代码,他用球避开导弹方向。然而,我正在努力使游戏更有创意。我遇到的问题是,如果你设计了一个定向的导弹精灵,即子弹,那么源代码将始终垂直发射子弹。它不会使子弹旋转到与船成一条直线。不幸的是,我被难倒了。下面是用于创建导弹并设置其动画的代码

//导弹

    // create a new Missile
    public function newMissile() {
        // create
        var newMissile:Missile = new Missile();

        // set direction
        newMissile.dx = Math.cos(Math.PI*ship.rotation/180);
        newMissile.dy = Math.sin(Math.PI*ship.rotation/180);

        // placement
        newMissile.x = ship.x + newMissile.dx*shipRadius;
        newMissile.y = ship.y + newMissile.dy*shipRadius;

        // add to stage and array
        gameObjects.addChild(newMissile);
        missiles.push(newMissile);
    }

    // animate missiles
    public function moveMissiles(timeDiff:uint) {
        for(var i:int=missiles.length-1;i>=0;i--) {
            // move

            missiles[i].x += missiles[i].dx*missileSpeed*timeDiff;
            missiles[i].y += missiles[i].dy*missileSpeed*timeDiff;
            // moved off screen
            if ((missiles[i].x < 0) || (missiles[i].x > 550) || (missiles[i].y < 0) || (missiles[i].y > 400)) {
                gameObjects.removeChild(missiles[i]);
                delete missiles[i];
                missiles.splice(i,1);
            }
        }
    }
//创建一个新的导弹
公共职能(){
//创造
var新导弹:导弹=新导弹();
//设定方向
new飞弹.dx=Math.cos(Math.PI*ship.rotation/180);
new飞弹.dy=Math.sin(Math.PI*ship.rotation/180);
//安置
new飞弹.x=飞船.x+新飞弹.dx*飞船半径;
new飞弹.y=船.y+新飞弹.dy*船半径;
//添加到舞台和阵列
gameObjects.addChild(新导弹);
导弹。推(新导弹);
}
//导弹动画
公共功能(timeDiff:uint){
对于(变量i:int=employments.length-1;i>=0;i--){
//移动
导弹[i].x+=导弹[i].dx*导弹速度*timeDiff;
导弹[i].y+=导弹[i].dy*导弹速度*timeDiff;
//移离屏幕
if((飞弹[i].x<0)| |(飞弹[i].x>550)| |(飞弹[i].y<0)| |(飞弹[i].y>400)){
removeChild(飞弹[i]);
删除导弹[一];
导弹.拼接(i,1);
}
}
}
非常感谢
Shane

你试过
newMissle.rotation=ship.rotation?谢谢!成功了!我甚至没想到。我在玩动画功能。非常感谢!您是否尝试过
newMissle.rotation=ship.rotation?谢谢!成功了!我甚至没想到。我在玩动画功能。非常感谢!