私はフラッシュで小さなゲームをプログラミングしています。
キャラクターのアニメーションをプログラミングしています
キャラクターの体はさまざまなオブジェクトで構成されています。たとえば、頭、胴体、腕、手、脚などのムービー クリップがあります。
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 になります。
誰かが私の問題を理解してくれることを願っています。
一番、
アルバロ