你好我试图创建一个类似于太空入侵者的游戏,并且很难创建hitTestObject,所以如果外星人击中mc_gun,玩家会失去生命,并且一旦他失去了三个生命游戏结束后被带到一个屏幕,他/她可以输入他们的名字,将其带入高分表。AS3 hitTestObject结束游戏
我还是要做到以下几点,但不知道从哪里开始...
创建玩家将3和静物。 当所有生命都消失时结束游戏。 采取输入名称屏幕 高分表。
任何帮助将不胜感激。
这是我的文档正文编码...
stop();
var score:Number = 0;
var livesLeft:Number = 3;
var lifesArray:Array = new Array();
lifesArray.push(life1);
lifesArray.push(life2);
lifesArray.push(life3);
addEventListener(Event.ENTER_FRAME, pulse);
function pulse(event:Event):void
{
checkForHitOnGun();
checkForHitOnAliens();
checkForBulletOnBulletHit();
//checkEndGameCondition
}
function checkForHitOnGun()
{
for (var i=0; i<numChildren; i++)
{
if (getChildAt(i) is alienbullet)
{
var mc_alienbullet:MovieClip = getChildAt(i) as MovieClip;
for (var j=0; j<numChildren; j++)
{
if (getChildAt(j) is gun)
{
var mc_gun:MovieClip = getChildAt(j) as MovieClip;
if (mc_alienbullet.hitTestObject(mc_gun))
{
health -= 10;
if (health<1){
if(livesLeft<1){
gotoAndPlay(2);
removeChild(mc_gun);
stage.removeEventListener(Event.ENTER_FRAME,pulse);
}
livesLeft--;
lifesArray[livesLeft].visible = false;
health=100;
if (livesLeft == 0){
(endGo);
gotoAndPlay(2);
}
}
trace("health =" +health);
}
}
}
}
}
}
function checkForHitOnAliens()
{
for (var i=0; i<numChildren; i++)
{
if (getChildAt(i) is bullet)
{
var mc_bullet:MovieClip = getChildAt(i) as MovieClip;
for (var j=0; j<numChildren; j++)
{
if (getChildAt(j) is alien)
{
var mc_alien:MovieClip = getChildAt(j) as MovieClip;
if (mc_bullet.hitTestObject(mc_alien))
{
var tobeDestroyed:MovieClip;
if (mc_alien.x > mc_bullet.x)
{
tobeDestroyed = mc_alien;
}
else
{
tobeDestroyed = mc_alien;
}
var bomb_mc:explosion = new explosion();
bomb_mc.x = tobeDestroyed.x;
bomb_mc.y = tobeDestroyed.y;
var addspaceship:alien = new alien();
addspaceship.x = 600;
addspaceship.y = Math.random()*(stage.stageHeight);
tobeDestroyed.destroy();
addChild(bomb_mc);
addChild(addspaceship);
score++;
return;
}
}
tb_score.text = "" + score;
}
}
}
}
function checkForBulletOnBulletHit()
{
for (var i=0; i<numChildren; i++)
{
if (getChildAt(i) is bullet)
{
var mc_bullet:MovieClip = getChildAt(i) as MovieClip;
for (var j=0; j<numChildren; j++)
{
if (getChildAt(j) is alienbullet)
{
var mc_alienbullet:MovieClip = getChildAt(j) as MovieClip;
if (mc_bullet.hitTestObject(mc_alienbullet))
{
var tobeDestroyed:MovieClip;
if (mc_bullet.x > mc_alienbullet.x)
{
tobeDestroyed = mc_bullet;
}
else
{
tobeDestroyed = mc_alienbullet;
}
/*score++;
tb_score.text = "" + score;*/
var bomb_mc:explosion = new explosion();
bomb_mc.x = tobeDestroyed.x;
bomb_mc.y = tobeDestroyed.y;
tobeDestroyed.destroy();
addChild(bomb_mc);
/*if (mc_bullet.hitTestObject(mc_alienbullet))
{
score++;
mc_bullet.gotoAndPlay(2);
}*/
score++;
return;
}
tb_score.text = "" + score;
}
}
}
}
}
//mc_gun would make the bullet fire only if the gun is clicked.
//the game is to difficult so i changed it to stage. to make the whole stage the fireing area.
stage.addEventListener(MouseEvent.CLICK, fire);
function fire(event:MouseEvent):void
{
var bulletfire:bullet = new bullet();
bulletfire.x = mc_gun.x - 20 + mc_gun.width;
bulletfire.y = mc_gun.y;
addChild(bulletfire);
}
mc_banner.addEventListener(MouseEvent.CLICK, startGo);
function startGo(event:MouseEvent):void
{
mc_banner.visible = false;
mc_instructions.visible = false;
mc_highscore.visible = false;
mc_gun.visible = true;
tb_score.visible = true;
addEventListener(Event.ENTER_FRAME, pulse);
var initialspaceship:alien=new alien();
initialspaceship.x = 600;
initialspaceship.y=Math.random()*(stage.stageHeight);
addChild(initialspaceship);
}
function endGo()
{
mc_gun.visible = false;
tb_score.visible = false;
removeEventListener(Event.ENTER_FRAME, pulse);
mc_banner.visible = true;
livesLeft--;
lifesArray[livesLeft].visible = false;
}
你试过了吗?你在哪里坠落?什么是对的,哪里出了问题?请更具体地说一下你的问题,因为你的问题是广泛的... – NemoStein 2013-04-22 15:16:42
@NemoStein我已经有了人生的工作是玩家获得三条生命,但是当生命全部消失时,我会用什么编码结束游戏并清除屏幕上的所有元素,然后将其带到显示输入名称的新屏幕以添加到高分表中。 – DP187 2013-04-22 15:41:22