【问题标题】:Making a Movieclip Turn a Corner Convincingly制作电影剪辑令人信服地转弯
【发布时间】:2013-07-11 18:49:25
【问题描述】:

你如何制作一个走路的人的电影剪辑令人信服地转过一个角落而不会让它看起来滑倒?

我尝试将 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 语句阶梯是正确的方法吗?

【问题讨论】:

  • 你能详细说明你看到了什么以及你想看到什么吗?如果您通过将其注册点(中心)作为头部所在的位置来旋转僵尸 gif,并围绕它旋转,它是否完成了您正在尝试的操作?
  • “令人信服”有点含糊,正如 Garry 所说,您应该详细说明您想要实现的目标。虽然,我认为这更多地取决于动画而不是运动的编程方式。

标签: actionscript-3 flash animation


【解决方案1】:

我能想到的最简单的方法是将运动分为 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 轴,然后计算出它应该是向左还是向右移动,然后是向上还是向下移动。然后它应用移动。

这没有经过测试,所以可能在某处存在错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多