超Flash Lite入門 ActionScript編 その5 揺れ運動
最近、予告エントリーになってしまって申し訳ないです....。
一般的には、上下の揺れ運動は、SinかCosを使うのですが、Math.Sin Cosは精度が悪いのと非公式サポートであるため、簡単かつ高速に実現する方法について書きます。
まずは、以下のKAYACさんの記事をご覧ください。
こちらは円運動をsin、cosを使用しないで実現する方法ですが、逆を言えばこの円運動からsin、cosにあたるものを分離できるはずです。
以下は、上下にムービークリップを振動させるサンプルです。物体が浮遊しているイメージを出す時によく使います。
フレーム1
K=0.16; sx=2; sy=2;
sxとsyは基本的に同じ値を入れます。値が大きくなると揺れの縦幅が大きくなります。Kは分割の大きさになります。値が大きい程、周期が短くなります。
フレーム2
sx-=sy*K sy+=sx*K _y+=(sx+0.025); //Flash Liteの小数点バグ対策
フレーム3
call( _currentframe-1); gotoAndPlay(_currentframe-1);
以下解説です。
sx=sin成分、syがcos成分と見ることができますが、両者ともどの位置から始まるかが違うだけですので、どちらか好きな方を使います。今回はsxのみを使用してy座標に+しています。sin、cosは一定周期の繰り返しなので、どちらかの方向に寄っていってしまうことはないはずなのですが、Flash Liteの小数点バグで、どちらかにずれていってしまうことがあるので、適宜補整値を加えて修正します。尚、syは直接的には使用していませんがsxの計算に必要になります。