0

你如何制作一个行走的人的电影剪辑令人信服地转过一个角落,而不会出现滑动?

我曾尝试将 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 动画进行测试:

在此处输入图像描述

有没有人有一个很好的功能,可以只使用 AS3 来转动电影剪辑?必须有一种更简单的方法,因为我正在尝试制作一个小游戏,其中一系列步行者 gif 沿着一条有很多转弯的路径,我不认为拥有巨大的 if 语句阶梯是正确的方法吗?

4

1 回答 1

0

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

在您的代码中,您将 x 或 y 加一,所以我假设 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 轴移动多少,然后计算出它应该向左还是向右移动,然后是向上还是向下移动。然后它应用运动。

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

于 2013-07-12T08:36:35.877 回答