2012年 03月 29日

【MUGEN】敵座標参照弾_下【制作技術】

つづき。何の事か判らない方は前の記事を先にご覧ください。

前回は「敵座標指定弾では、弾の移動速度X,Yは自座標から敵座標への角度によって変動」
することについて解説しました。


d0050070_16233824.jpg
以下じゃなくて未満だけどね。

QKさんに頂いた画像と前回の解説画像をもとに、新たに書き起こしたのがこちら。
d0050070_1438411.jpg
弾速sは任意の速度です。お好きな速度を入れて下さい。


今回は実際にこれを求める方法を模索していきたいと思います。

三角関数と逆三角関数
を使います。

はい。げろが出そうですね。この単語でイラっとする人は非常に多いかと思われます。
この三角関数および逆三角関数ですが、実はこういったことを求めるのに非常に適しています。
MUGEN上でもそのまま使用できますので、いちいち計算する必要なく、
適当な公式を置いておくだけで単純な敵座標指定弾は完成してしまいます。

何を使えばいいのか理解さえ出来ればあとは勝手に計算機(MUGEN)がやってくれる。
非常に良い時代になりましたね。
じゃ、何を使うのか見ていきましょう。



まず角度が判らなくては話にならないので、これを求めたいところですね。
そのためには自分の座標と相手の座標、そしてその差がどのくらいあるかが必要不可欠です。

基本的にMUGEN上での自座標は0,0ですね。ローカル座標などといわれるものです。
そしてMUGENには相手座標までの距離を直接取得出来る命令が標準で搭載されています。
自座標から相対で値を出してくれますので、これらを用いることで
相手の座標、および自座標との差
が得られます。
なんといちいち計算しなくていいんです。すごく便利ですね!ここに書くことなんかないよ!



んで、自分の座標と相手の座標の差が判ったので、弾の角度rを求めることが出来ますね。
実際の求め方ですが・・・逆三角関数を使いましょう。

図をちら見してください。現在判っている情報は自座標(0,0)、任意の弾速s、敵座標(までの距離)x,yです。
逆三角関数には、自座標x,yと敵座標x,yが判っていれば
ダイレクトにその角度を求めだすとってもお買い得な計算式があります。

それがatan2(敵x,敵y)です。
atan2もMUGEN上で普通に使えるので、(1)で調べた「敵座標を取得」する命令を代入してやれば
ここはそれだけで完成です。仕組みが知りたい方は本屋さんで数学の参考書を探しましょう。

追記:大ウソでした。

確認したところ、MUGENにatan2は実装されておりません

ここは実装されているatanを使って、以下の手法を取りましょう。
atan(敵y / 敵x)
atanの性質上、正面方向(真正面を0度として、-90度~+90度)の範囲に限られますが、
これにより角度を算出可能です。

補足になりますが、(2)で使用したatanでは正面方向のみの算出なので
角度の計算時に相手が後ろ、負の方向に行ってしまった場合は計算できません。
この処理にはMUGEN上で相手が後ろに回ったら(発射元となるキャラやヘルパーを)振り向かせる、
あるいはifelseを使い、相手の位置にあわせて弾速Xに-1をかけるなどの工夫が必要となります。



そして角度が求められたら、その角度と自分が指定する任意の弾速sから、
補正後の弾の速度X、Yを求めることが出来るようになります。
ここでもXとYでそれぞれ一回ずつ三角関数を使えば、直接求めることが出来ます。仕組みはry

弾速Xを求めるには、弾速s * Cos角度r
弾速Yを求めるには、弾速s * Sin角度r

です。MUGEN上でこのまま使えるのでry

ここまでの情報をまとめると下記図が出来あがります。
d0050070_15491095.jpg
だいぶ高校数学の教科書っぽい図になりました。


さてさてこの後は何をしたらいいんでしょうか。
欲しかったのは弾速X、Yで、計算式は判りました。
計算はMUGENが勝手にやってくれます。

・・・おや。完成ですね。

ほらね?簡単だったでしょう?

まとめ
d0050070_15493378.jpg



おつかれさまでした∩(・ω・)∩ばんじゃーい
[PR]

by goukasoshina | 2012-03-29 16:07 | 最速のmugen


<< 【MUGEN】敵座標参照弾_お...      【MUGEN】敵座標参照弾_上... >>