如何制作一个行走男子的电影剪辑令人信服地转弯而不会出现滑动?
我尝试将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语句的巨大梯子是正确的方法吗? / p>
答案 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轴移动多少,然后它确定它应该向左还是向右移动,然后向上或向下移动。然后它应用运动。
这未经过测试,因此某处可能存在错误。