我正在制作Flash游戏。这是主要的英雄和敌人。这是一个完全动画的游戏,但我有问题,当英雄在攻击动画时它应该将敌人向后推〜100 px一步一步。 现在我得到了:
单击“x”键开始攻击动画,直接将Enemy的x坐标设置为+/- 100 px。
这是大约100帧,我需要在动画期间逐步将敌人推回(第一帧-1 px,第二帧-2px,第57帧-57px等......)。
这是代码:
if (Hero.leftx <= enemyRight && (Enemy.hitTestObject(Hero))) //here check if Hero have collision with Enemy
{
Hero.gotoAndStop("attack" + attack); //start attack animation
Enemy.x += 100; //here push enemy by 100px
currentHPenemy -= 10;
}
你有想法吗?
据我所知,我需要制作类似的东西,但我不知道如何正确地制作它:
if(currentFrame != totalFrames) {
Enemy.x += 100
}
答案 0 :(得分:0)
你应该为你的敌人设置一个速度,让它每帧移动一个速度* frameLength。
答案 1 :(得分:0)
在你的敌人类中有一个hitBack()函数,它将一个Event.ENTER_FRAME监听器添加到你的movieclip并将一个计数器设置为0.在enterframe函数中,使这个敌人的sx位置增加1,然后当计数器达到100,删除EVENT.ENTER_FRAME监听器。
public class Enemy
{
private var count = 0;
public function hitBack()
{
count = 0;
this.addEventListener(Event.ENTER_FRAME, myEnterFrame);
}
private function myEnterFrame(e)
{
if (count == 100) this.removeEventListener(Event.ENTER_FRAME, myEnterFrame);
else
{
count++;
this.x += 1;
}
}
}
然后你会这样称呼它
enemy.hitBack();
可能需要调整一两行,它不在我的头顶。