CF2.5 横スクロールアクションの重力
ズルズル伸びておりました重力の実装説明回です。
ようやく色々準備が整いました…
まずはじめに、私自身がまだまだ初心者故、もっといい方法がある、とか内容に不足があるなど、ある程度知識のある方には役に立ちません。あくまで、
横スクロールアクション作りたいけど何からやりゃいいか分かんねーよ畜生
という方向けの内容になっておりますのでご了承下さい(;´Д`A
また、ソフト付随のブロック崩しチュートリアルを体験した事を前提にさせて頂きます
それと、私も最初に重力移動でつまづき、ペポソフト様のサイトで掲載されている「旧ー2Dアクション基本編プラス」というサンプルプログラムを拝見させて頂き非常に勉強になりました!
リンク先:ペポソフト様
重力だけでなく、ゲームに必要な要素を網羅した内容になっており、このサイト様が無ければ間違い無く再び挫折していたでせう( ´_ゝ`) …本当に感謝しております。
なので、この講座を読む前に一度触ってみる事をお勧めします。触ってみたけどまだ自分では組めないよ…という方の参考になればと思ってここから説明をさせて頂きます
座標とオブジェクトの移動
それではまず初めに、CF2.5における座標と位置の関係の説明から始めましょう❗️
上図は皆さん一度はご覧になった事があるであろう一般的な座標です。
点の位置を横軸Xと縦軸Yで表すアレですね。
CF2.5も表示される画面には座標が割り当てられています。ですが、CF2.5における座標は下図のようにちょいと特殊なんです。
画面左上を基点(0.0)として、そこから右方向、下方向に進むにつれて全て座標は➕で表されます。
また、座標上の一マスを「ピクセル」という単位で表します。
つまり、座標上で点が動く(=画面上でオブジェクトが移動する)時、下図のように表せます
横方向、縦方向ともに基点である左上に近づく程数字は0に近くなる(マイナス方向に移動する)という事になります。
CF2.5の命令文(イベント)では、XY座標それぞれに分けて命令しなければなりませんから、例えばオブジェクトを左斜め上に1ピクセル動かすのであれば、
・X座標をオブジェクトのX座標➖1移動する
・Y座標をオブジェクトのY座標➖1移動する
という2行の命令が必要になる訳です。
右斜め下であれば縦横共に基点から離れますから、X➕1 Y➕1移動させればいい、という事になりますね!
ここまでは問題ないでしょうか?ここを把握しておかないと移動関連のイベントが訳が分からなくなります(私がそうでした…(;´Д` )のできっちり覚えてしまいましょう!
重力移動の概念
ではいよいよ重力移動に進みましょう!
上図で平面的な重力移動を表してみました。
横スクにおける重力とは、言い換えれば、
常にY軸をプラス方向に移動させようとする力
という事になりますよね!
じゃあ常にY座標をプラス1してやればいいんじゃないか?となるわけですけども、それだと一定スピードでしか動かすことが出来ず、キビキビ動くアクションを作りたい方にとっては今ひとつリアリティーに欠けます。
そう、重力のリアリティーを生む最大の要素である重力加速度 が無いからなんですね!
重力の加速度は、図のように、一コマ毎に(1フレーム毎に)移動する距離が増えて行く、という事。
これをCF2.5的に言い換えれば
Y軸方向に移動する距離を1フレーム毎に増やしていく
処理が必要と言うことになります。
それでは長くなりましたので一旦区切ります。
次回は実際に重力移動するオブジェクトを作るところまでやって行きます(^o^)
ここまでで十分!と思われた方は是非自身で色々試してみて下さい。
私もそうでしたが、cf2.5は正に「習うより慣れろ」という言葉が相応しいツールに感じます。
次回の講座までに何度か通常更新を挟むかもしれません、準備が出来るまでご容赦( ´_ゝ`)下さい