制作一个Movieclip令人信服地转过一个角落

时间:2013-07-11 18:49:26

标签: actionscript-3 flash animation

如何制作一个行走男子的电影剪辑令人信服地转弯而不会出现滑动?

我尝试将if语句与x,y和旋转的计数器混合但我无法正确使用。

这是我的代码:

addEventListener(Event.ENTER_FRAME, zombieGo)
var rMod = 0;
var turned = false;
function zombieGo(e:Event):void
{
    var zPos = zombie_a.x;
    if(zPos > 100)
    {
        if(zombie_a.rotation != 180)
        {
            zombie_a.rotation++;
            zombie_a.x += 1 + rMod;
            if(rMod > -2 && turned == false)
            {
                rMod -= 0.02;
            } else {
                rMod = 0;
                turned = true;
            }

        }
        zombie_a.y++;
    } else {
        zombie_a.x++;
    }
}

我正在使用这里看到的gif动画进行测试:

enter image description here

是否有人只能使用AS3转动动画片段?必须有一个更简单的方法,因为我正在尝试制作一个小游戏,其中一系列步行者GIF遵循其中有许多转弯的路径,我不认为拥有if语句的巨大梯子是正确的方法吗? / p>

1 个答案:

答案 0 :(得分:0)

我能想到的最简单的方法是将动作分成Xmovement和Ymovement。

在您的代码中,您将x或y递增1,因此我假设1是您希望僵尸移动的速度。

所以,我不太清楚僵尸应该转向的逻辑,所以我只想写一个你可以留在听众身上的函数。

private const ZOMBIE_SPEED:Number = 1;

function zombieMove():void
{
    var xMod:int;
    var yMod:int;
    var yPercent:Number;

    yPercent = (zombie_a.rotation % 90) / 90;

    xMod = (zombie_a.rotation > 180 && zombie_a.rotation < 360) ? -1 : 1;
    yMod = (zombie_a.rotation > 90 && zombie_a.rotation < 270) ? -1 : 1;

    zombie_a.y += (ZOMBIE_SPEED * yPercent) * yMod; //
    zombie_a.x += (ZOMBIE_SPEED - yPercent) * xMod; //left over zombieSpeed
}

这将做的是,首先弄清楚僵尸的运动应该沿着Y轴移动多少,然后它确定它应该向左还是向右移动,然后向上或向下移动。然后它应用运动。

这未经过测试,因此某处可能存在错误。