「キャラ製作の小技」の編集履歴(バックアップ)一覧はこちら
「キャラ製作の小技」(2015/08/06 (木) 00:31:09) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*キャラ製作の小技
**AngleDrawとAngleAddの使用例
スプライトを回転させたいけどAngleの
使い方がよくわからない。
一定速度で回転させたいという人のための例です。
>[State 1000]
>type = AngleDraw
>trigger1 = 1
>
>[State 1000]
>type = AngleAdd
>trigger1 = 1
>value = 2
**擬似EO-ISM
CAPCOM VS. SNK 2 EOのEO-ISM(GC版ではGC-ISM)を
MUGEN上で再現するためのコマンド
***※記入例 Aボタンを押したまま前キーを長く押し続ける&押してすぐ離す
>[Command]
>name = "Command1"
>command =/a,~30F;(Aボタンを押したまま前キーを30フレーム溜めて離す)
>[Command]
>name = "Command2"
>command =/a,F;(Aボタンを押したまま前キーを押す)
>[State -1,]
>type = ChangeState
>value = 300
>triggerall = command = "Command1"
>trigger1 = ctrl
>[State -1,]
>type = ChangeState
>value = 200
>triggerall = command = "Command2"
>trigger1 = ctrl
CMDファイルは上に記入されたものから優先するため
Command2を先に記入すると前キーを押した時点でCommand2のステートに移行し
Command1が出せなくなる
**角度や距離関連
ホーミングする追尾弾等に
***相手キャラまでの角度を調べる
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)
#contents
----
*AngleDrawとAngleAddの使用例
スプライトを回転させたいけどAngleの
使い方がよくわからない。
一定速度で回転させたいという人のための例です。
>[State 1000]
>type = AngleDraw
>trigger1 = 1
>
>[State 1000]
>type = AngleAdd
>trigger1 = 1
>value = 2
----
*擬似EO-ISM
CAPCOM VS. SNK 2 EOのEO-ISM(GC版ではGC-ISM)を
MUGEN上で再現するためのコマンド
''※記入例 Aボタンを押したまま前キーを長く押し続ける&押してすぐ離す''
>[Command]
>name = "Command1"
>command =/a,~30F;(Aボタンを押したまま前キーを30フレーム溜めて離す)
>[Command]
>name = "Command2"
>command =/a,F;(Aボタンを押したまま前キーを押す)
>[State -1,]
>type = ChangeState
>value = 300
>triggerall = command = "Command1"
>trigger1 = ctrl
>[State -1,]
>type = ChangeState
>value = 200
>triggerall = command = "Command2"
>trigger1 = ctrl
CMDファイルは上に記入されたものから優先するため
Command2を先に記入すると前キーを押した時点でCommand2のステートに移行し
Command1が出せなくなる
----
*角度や距離関連
ホーミングする追尾弾等に。
''相手キャラまでの角度を調べる''
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)
----