自作ゲームの大福島

プログラムの使えない素人がCF2.5を使ってゲームを作ってみるブログです

スポンサードリンク

色々な円運動① 楕円形動作

折角三角関数も覚えた事なので、この機に今まで避けていたプチ物理動作を学んでおり、肝心の製作は全く進んでいない私です。

 

今回は、以前ご紹介した円運動イベントの進化版です。

以前の記事を読まれておらず、CF2.5で作る円運動に関して良く分かっていない、という方は円運動の基礎講座から読まれる事をお勧めします

 

vobo.hatenadiary.jp

半径自動計算+楕円作成+回転方向変換機能付きイベント

まずイベント構成がこれで

f:id:vobo:20170725013609j:plain

変数構成がこんな感じです

f:id:vobo:20170725014135j:plain

 これでどんな機能を実装しているかというと、

f:id:vobo:20170725014504g:plain

①ドラッグ&ドロップで適当に配置した回転オブジェクトと中心点の距離を自動で計算して、それを半径とした円運動を実現。

(要は視覚的に円の大きさを設定出来るというメリットがあります

これは前回の円動作講座④で解説したのと同じものです。)

 

vobo.hatenadiary.jp

②変数(回転方向)に「1」又は「-1」を代入してやる事で、右回り、左回りを自動で切り替えできます。

(1の場合は右回り、-1の場合は左回りに回転します)

 

③変数「左右伸び率」、「上下伸び率」に任意の数字を代入する事で、X軸方向、又はY軸方向の半径のみを拡張した、楕円運動を実現する事が出来ます。

 

ここからは具体的な解説です。

円運動自体の解説はリンクしてある以前の記事をご参照頂き、ここでは追加部分のみの説明となります。

 

まずは上記②回転方向を変数で選択してやる、というものですが、

sin、cosを求める為の変数(角度θ)に、回転速度を加算する事で右回り、減算する事で左回りに運動する、という事を利用したものです。

回転速度に1を乗する事で正の数を、-1を乗する事で負の数を加算(マイナスする)する事が出来るわけですね。

 

…もうお気づきの方もいらっしゃると思いますが、正直こんな変数使わなくても、

変数(回転速度)にマイナスの数字を代入してやるだけで実現出来るんですけどね。

でもまあ、触りたての時って、慣れれば当たり前の事も思いつかなかったりするわけで、あくまで誰でも使える汎用的なイベントの為に作った変数です、というわけでご理解を。

 

 

続いて③、楕円形運動の部分です。

ここの計算部分を拡大してみます。

f:id:vobo:20170725021625j:plain

変数(左右伸び率)で横方向の移動量(コサイン)を、変数(上下伸び率)で縦方向の移動量(サイン)をそれぞれ変化させる式である事が分かると思います。

 

そう、楕円形円動作のポイントは、サインとコサイン、

どちらかだけの数字を変化させる

事で実現する事が出来ます。

 

例えば、左右伸び率に2を代入、上下伸び率を1のままにして実行するとどうなるかというと、どちらも1を代入した真円に比べて、

f:id:vobo:20170725023146g:plain

*今回は軌道を分かりやすくする為、残像を付けてみました 

f:id:vobo:20170725023329g:plain

少し分かりにくいですが、軌道が横長に変形します。

では、左右伸び率に0.5を代入するとどうなるか?

代入前よりコサインの数字が小さくなるわけですから、

f:id:vobo:20170725024221g:plain

こんな感じに、縦方向の長さは変わらず、左右の長さが短くなり、結果的に縦長の楕円を描く動きに変わります。

変数(上下伸び率)も、全く同じように、任意の数字を代入する事で、こちらは上下の長さを変更する事で楕円の軌道を描く事が出来ます。

 

以上で解説は終わりです。

あらゆる円動作の雛形として、一家に一台いかがでしょうか?

シューティングゲームで、自機の周囲を回転しているオプションの軌道を任意で変形させる、なんて動作に使える!かもしれません。

それでは今回はこのへんで。