ActionScript3:击中时让敌人飞翔

时间:2014-06-06 22:35:24

标签: flash actionscript collision game-physics

我希望能够使我的敌人飞起来并落在地上(以显示冲击的力量)再次起身。我的主要角色是恶人。英雄第5帧是拳击动画。

if(hero.hitTestObject(villain)&& hero.currentFrame==5&& hero.scaleX==-1 &&hit==true){

        villain.gotoAndPlay('tdt');
        villain.x-=100;
        movingl=false;
        movingr=false;

    }
  else if(hero.hitTestObject(villain)&& hero.currentFrame==5&& hero.scaleX==1){

        villain.gotoAndPlay('tdt');//villain damaged frame
        villain.x+=200;
        villain.y-=10;
        movingl=false;//if AI moves left 
        movingr=false;//if AI moves right

    }
             else{
        villain.gotoAndStop('vstill');
    }

但有两件事情不起作用:

1)当动画开始时没有打出时的目标飞行(尝试使用当前帧来访问Movie Clip中的Movie Clip以获取特定帧但是在输出中得到了这个

TypeError:错误#1010:术语未定义且没有属性。)

2)由于移动的AI代码,恶棍在半空中快速进行动画更改并开始运行。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我可以观察到你正在对两个物体进行完整的碰撞检测,这让我想到你游戏中的其他一些问题: - 您没有考虑到这些方法并不完美:try reading this - 如果是战斗游戏,你也不会因为击球动作而触碰这些物体,或仅仅是因为它们只是触碰(就像两个角色背靠背碰撞而没有战斗有效动作)。

我也看到虽然你打算编写AS3,但是你仍然使用像gotoAndPlay这样的方法来做AS2方式。

我们仍然需要有关如何构建整个MovieClips和swf文件以便能够调试它的更多信息。或者发布项目的相关部分,以便能够在Flash中调试它。

答案 1 :(得分:0)

让它变得更简单 使用和ENTER_FRAME事件作为检测器,然后去那里说出你的角色的健康状况低于50,例如,去你的下降功能。 你可以设置你的循环函数只做一次下降动作。