2

私はフラッシュで小さなゲームをプログラミングしています。

キャラクターのアニメーションをプログラミングしています

キャラクターの体はさまざまなオブジェクトで構成されています。たとえば、頭、胴体、腕、手、脚などのムービー クリップがあります。

AS3 でアニメーションを作成しています。たとえば、次のようになります。

(プログラムされた片足の動きのみ)

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;

        }




    }

歩行アニメーションは4段階あり、

それから私は 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 になるため、関数は何もせず、.5 からトゥイーンします。 .5 (何もない) にすると、.5 から 0 になり、次に再び .5 になります。

誰かが私の問題を理解してくれることを願っています。

一番、

アルバロ

4

1 に答える 1

-1

これが役に立つかどうかはわかりません...

http://dragonbones.github.com/index.html#.ULZvXqUq54F

于 2012-11-28T20:10:00.443 に答える