繁体   English   中英

用AS3编程角色动画

[英]programming character animation with AS3

我正在用Flash编写一个小游戏,

我正在编写角色的动画,

角色主体由不同的对象组成,例如,我有一个影片剪辑,它是头部,躯干,手臂,手,腿等。

我正在用AS3制作动画,例如:

(仅编程的1条腿运动)

public function walk(){
        if(_etapa==5){
            _etapa=1;
        }
        var etapa=_etapa;

        switch(etapa){

            case 1:
                Animar(musloDer,22,RetomarAnimacion);

            break;

            case 2:

                Animar(musloDer,0,RetomarAnimacion);
            break;

            case 3:
                Animar(musloDer,-22,RetomarAnimacion);
            break;

            case 4:
                Animar(musloDer,0,RetomarAnimacion);
            break;

        }




    }

步行动画有四个阶段,

然后我有Animar函数:

private function Animar(parte, valor, callback){
        trace(direccion);
        if(direccion=="SE" || direccion=="NO"){

            valor=valor+45
            valor=Math.abs(valor);
            if(valor>180){
                valor=360-valor;
            }
            if(valor<0){

            }

            _scaleY = (1-(valor)/90);
            trace(_scaleY);
            _rotation = 0;


        }
        else if(direccion=="N"  || direccion=="S"){



            _scaleY = .5;
            _rotation = -valor;
        }

        _etapa++;
        TweenLite.to(parte, 2.5, {rotation:_rotation, scaleY:_scaleY,ease:Linear.easeNone, onComplete:caminar});

    }

该功能将身体部位移动到所需的角度,它还决定要做什么,角色可以在8个方向(前后,左右,对角线)上行走,并且从等轴测视图中显示角色。 因此,动画功能根据角色的方向来决定要做什么。

例如,如果角色从侧面看是向右行走,那么在这种情况下将一条腿旋转22度非常简单,只需LeftLeg.rotation = 22; 很好,但是当角色面对相机时,腿部旋转不是旋转,而是scaleY属性的变化,例如,由于身体处于等轴测视图,正常位置中的1条腿的scaleY为.5(或50%),当腿在45º时,scaleY为1,依此类推。

但是我有一个问题,因为,例如,如果LEG初始位置为0º(scaleY = 0.5),而我想将其移至90º,那么90º也将为scaleY = 0.5,因此我的函数什么也不做,它从0.5补间到.5(无),则应该从.5到0,然后再到.5。

我希望有人能理解我的问题。

最好,

阿尔瓦罗

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM