Flash 如何添加碰撞检测

Flash 如何添加碰撞检测,flash,actionscript,Flash,Actionscript,我想做一个游戏,让坏人在飞机上飞来飞去,你必须试着躲避他们。我已经设法对飞机的控制以及如何将坏人添加/移动到舞台上进行了编码。我想知道如何对碰撞检测进行编码,这样如果飞机被坏人击中,我就会被带到“游戏结束”屏幕 导入flash.utils.Timer; 导入flash.events.TimerEvent; var upPressed:Boolean=false; 按下var:布尔值=假; var leftPressed:Boolean=false; var rightPressed:Boolea

我想做一个游戏,让坏人在飞机上飞来飞去,你必须试着躲避他们。我已经设法对飞机的控制以及如何将坏人添加/移动到舞台上进行了编码。我想知道如何对碰撞检测进行编码,这样如果飞机被坏人击中,我就会被带到“游戏结束”屏幕

导入flash.utils.Timer;
导入flash.events.TimerEvent;
var upPressed:Boolean=false;
按下var:布尔值=假;
var leftPressed:Boolean=false;
var rightPressed:Boolean=false;
var baddies:Array=newarray();
var baddieSpeed:int=15;
var定时器:定时器=新定时器(1000);
timer.addEventListener(TimerEvent.timer,addBaddie);
timer.start();
//deg2rad=Math.PI/180;
//rad2deg=180/Math.PI;
plane.addEventListener(Event.ENTER_FRAME,fl_MoveIndirection FKey_2);
stage.addEventListener(键盘事件。按键向下,fl设置按键按下2);
stage.addEventListener(KeyboardEvent.KEY向上,fl\u未设置按键2);
函数fl_MoveInDirectionOfKey_2(事件:事件)
{
如果(增加)
{
平面y-=8;
}
如果(按下)
{
平面y+=8;
}
如果(左按)
{
平面x-=8;
}
如果(右键按下)
{
平面x+=8;
}
}
功能fl_设置按键按下_2(事件:键盘事件):无效
{
开关(event.keyCode)
{
case Keyboard.UP:
{
upPressed=true;
打破
}
case Keyboard.DOWN:
{
downPressed=true;
打破
}
case键盘。左:
{
leftPressed=true;
打破
}
case.RIGHT:
{
rightspressed=true;
打破
}
}
}
功能fl_未设置按键按下_2(事件:键盘事件):无效
{
开关(event.keyCode)
{
case Keyboard.UP:
{
upPressed=false;
打破
}
case Keyboard.DOWN:
{
按下=假;
打破
}
case键盘。左:
{
leftPressed=false;
打破
}
case.RIGHT:
{
右压=假;
打破
}
}
}
timer.addEventListener(TimerEvent.timer,addBaddie);
timer.start();
函数addBaddie(evt:TimerEvent):无效{
var baddie:baddie=new baddie();
baddie.x=-baddie.width
baddie.y=Math.random()*stage.stageHeight;
baddie.angle=getAngle(baddie.x,baddie.y,plane.x,plane.y);
baddie.rotation=getAngle(baddie.x,baddie.y,plane.x,plane.y);
坏家伙。速度=坏家伙速度
addChild(坏人);
坏家伙。推(坏家伙);
}
var baddieMover:定时器=新定时器(40);
baddieMover.addEventListener(TimerEvent.TIMER,moveBaddies);
baddieMover.start();
变量计数器:int=0;
函数moveBaddies(evt:TimerEvent):无效{
for(变量i:int=0;i
获取对象的边界-即坏人和飞机,然后检查交叉点。在伪代码中:

Rectangle rect_1 = plane.getBounds(); 
Rectangle rect_2 = baddie.getBounds();

if(rect_1.intersects(rect_2))
{
   DoSomethingAmazing();
}

这里有一个更详细的教程:

Flash有一个名为hitTestObject的内置方法,可用于基于正方形/边界框的简单碰撞

if(player.hitTestObject(baddies[i])){
//kill the player or whatever, go to game over screen, break out of for loop
}
if(player.hitTestObject(baddies[i])){
//kill the player or whatever, go to game over screen, break out of for loop
}