「キャラ製作の小技」の編集履歴(バックアップ)一覧はこちら
キャラ製作の小技 - (2007/12/16 (日) 14:20:52) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*キャラ製作の小技
**角度や距離関連
ホーミングする追尾弾等に
***相手キャラまでの角度を調べる
trigger、atanを使います。
atanの返す値はラジアンのため、そのままでは"AngleDraw"等には使えないので度数に直し正負を与えます。
>(atan( (p2dist x-(p2dist x=0))/(p2dist y-(p2dist y=0)) )*180/pi ) - ((p2dist y>0)-(p2dist y<=0))*90
***相手キャラとの直接距離を調べる
****atanな方法
これもatanを使います
>9 : 文の人 ◆PpJMaaDGNM sage : 2007/12/16(日) 13:42:36 ID:WvfuHp/S
>>>1乙
>前スレの続き
>p2dist x/(cos((atan((p2dist y-(const(size.mid.pos.y))+enemynear,const(size.mid.pos.y))/(p2dist x))*180/pi)*pi/180))
>(cos((atan((p2dist y-(const(size.mid.pos.y))+enemynear,const(size.mid.pos.y))/(p2dist x))*180/pi)*pi/180))
>この部分でx方向に1フレームの間に進む距離を計算
>それをp2dist xに除算で計算
>=相対距離
>?にならんかなぁ・・・
MUGENについて語るスレpart17より
http://bbs.nicovideo.jp/test/read.cgi/question/1197775862/9
****四則演算な方法
ちなみに四則演算だけで出来る方法もあります。また、返す値も多少異なりこちらのが少し小さいようです。
>[state fabs-x20]
>type = varset
>trigger1 = 1
>fvar(20)=( P2dist x*((p2dist x>=0)-(p2dist x<0)) ) + ((P2dist x = 0)*)
>[state fabs-y21]
>type = varset
>trigger1 = 1
>fvar(21)=( P2dist y*((p2dist y>=0)-(p2dist y<0)) ) + ((P2dist y = 0)*1)
>[state x 10];x<yなら値を入れ替える
>type = varset
>trigger1 = 1
>fvar(10)=( (fvar(20) > fvar(21))*fvar(20) ) + ( (fvar(20) < fvar(21))*fvar(21) ) + ( fvar(20) = fvar(21) )
>[state y 11];x<yなら値を入れ替える
>type = varset
>trigger1 = 1
>fvar(11)=( (fvar(20) < fvar(21))*fvar(20) ) + ( (fvar(20) > fvar(21))*fvar(21) ) + ( fvar(20) = fvar(21) )
>[state 0]
>type = varset
>trigger1 = 1
>fvar(0)=fvar(11) / fvar(10)
>[state 1]
>type = varset
>trigger1 = 1
>fvar(1)=fvar(0)*fvar(0)
>[state 2]
>type = varset
>trigger1 = 1
>fvar(2)=fvar(1) / ( 4 + fvar(1) )
>[state 3] ;ここ(fvar(3))を利用
>type = varset
>trigger1 = 1
>fvar(3)=fvar(10) + 2*fvar(10)*fvar(2)
*キャラ製作の小技
**角度や距離関連
ホーミングする追尾弾等に
***相手キャラまでの角度を調べる
trigger、atanを使います。
atanの返す値はラジアンのため、そのままでは"AngleDraw"等には使えないので度数に直し正負を与えます。
>(atan( (p2dist x-(p2dist x=0))/(p2dist y-(p2dist y=0)) )*180/pi ) - ((p2dist y>0)-(p2dist y<=0))*90
***相手キャラとの直接距離を調べる
****atanな方法
これもatanを使います
>9 : 文の人 ◆PpJMaaDGNM sage : 2007/12/16(日) 13:42:36 ID:WvfuHp/S
>>>1乙
>前スレの続き
>p2dist x/(cos((atan((p2dist y-(const(size.mid.pos.y))+enemynear,const(size.mid.pos.y))/(p2dist x))*180/pi)*pi/180))
>(cos((atan((p2dist y-(const(size.mid.pos.y))+enemynear,const(size.mid.pos.y))/(p2dist x))*180/pi)*pi/180))
>この部分でx方向に1フレームの間に進む距離を計算
>それをp2dist xに除算で計算
>=相対距離
>?にならんかなぁ・・・
MUGENについて語るスレpart17より
http://bbs.nicovideo.jp/test/read.cgi/question/1197775862/9
****四則演算な方法
ちなみに四則演算だけで出来る方法もあります。また、返す値も多少異なりこちらのが少し小さいようです。
>[state fabs-x20]
>type = varset
>trigger1 = 1
>fvar(20)=( P2dist x*((p2dist x>=0)-(p2dist x<0)) ) + ((P2dist x = 0)*1)
>[state fabs-y21]
>type = varset
>trigger1 = 1
>fvar(21)=( P2dist y*((p2dist y>=0)-(p2dist y<0)) ) + ((P2dist y = 0)*1)
>[state x 10];x<yなら値を入れ替える
>type = varset
>trigger1 = 1
>fvar(10)=( (fvar(20) > fvar(21))*fvar(20) ) + ( (fvar(20) < fvar(21))*fvar(21) ) + ( fvar(20) = fvar(21) )
>[state y 11];x<yなら値を入れ替える
>type = varset
>trigger1 = 1
>fvar(11)=( (fvar(20) < fvar(21))*fvar(20) ) + ( (fvar(20) > fvar(21))*fvar(21) ) + ( fvar(20) = fvar(21) )
>[state 0]
>type = varset
>trigger1 = 1
>fvar(0)=fvar(11) / fvar(10)
>[state 1]
>type = varset
>trigger1 = 1
>fvar(1)=fvar(0)*fvar(0)
>[state 2]
>type = varset
>trigger1 = 1
>fvar(2)=fvar(1) / ( 4 + fvar(1) )
>[state 3] ;ここ(fvar(3))を利用
>type = varset
>trigger1 = 1
>fvar(3)=fvar(10) + 2*fvar(10)*fvar(2)