トップ | 2007/06 | FLASH LABO | 滑らかに回転をするときの0°と360°との繋ぎ

滑らかに回転をするときの0°と360°との繋ぎ

■FLASH LABOスクリプト

_rotationプロパティーでふんわりした動きで回転させたいとき、目標の値案まで割り算処理で近寄っていくとB Typeのような動きになってしまいます(゚皿゚)ガビーン
180から-180までの角度で回ってるらしく、-180と180の境をまたいだ瞬間逆回転してしまう…うーん…と、そこをどうにかならないかなといろいろ考えてみました。そこでうまく動いたのがA Typeです('u')

//A Type
onClipEvent (enterFrame) {
	_tr = _root.xy_r(_parent.t._x - _x , _parent.t._y - _y)	
	_rDff = (_tr-_rotation+360)%360
	if(_rDff > 180){ _rotation += (_rDff-360)/5 }else
	if(_rDff > 1){ _rotation += _rDff/5 }
}

とりあえず現在角度と目的角度の値を0~360に収まるように変更。
180を超えた場合、360引いて調整。ってかんじでうまく動きました。
使用:function xy_r

ちなみにうまくいかなかったB Typeはこれ。

//B Type
onClipEvent (enterFrame) {
	_tr = _root.xy_r(_parent.t._x - _x , _parent.t._y - _y)	
	_rotation += (_tr-_rotation)/5	
}