自作ゲームの大福島

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

スポンサードリンク

cf2.5 PMO(Platform Movement)のobjectstates判定について

f:id:vobo:20151222003916j:plain

ガツガツガツ…ムシャムシャムシャ…(無言)

 

本日は今まで放置し続けてきたバグ取り作業を続けておりましたが、思っていたよりもスムーズにバグの修正が完了し、とりあえずの目処がつきました。

本日修正したバグの中に、

「ダッシュ中に攻撃(主人公が弾を一つ発射する)を行うと、攻撃キーを1回押しているだけなのに、2回連続で弾が発射されてしまう」

という物がありました。

 

分かった事は、攻撃処理を行うイベントの中に、「主人公が地上に立っている時、かつキーを押したとき発射」という条件と、「主人公が移動している時かつ、キーを押した時発射」という二つの条件を別のイベント行に設定していた為、ダッシュ中(移動中)にキーを押すと2行のイベントが同時に発動してしまい、結果として2回処理が行われていたという事。

当初、攻撃イベントを設定する時に、PMO制御の「object is standing on the ground」は、主人公が着地した状態で停止している状態を指すと思っていたので、別に移動中の条件を作っていたんですね。

結果としては、「主人公が移動している時…」のイベント行を削除するだけで難なく解決致しました。

 

で、折角なので、今日はPMOの「object states」がそれぞれどんな状態を限定しているのか、検証してみたので御報告します。

 

*以下はcf2.5のエクステンション「PMO(Platform Movement)」に限定した内容になっていますので、使用していない方には全く参考になりません

 

f:id:vobo:20151222014332j:plain

まずはこんな条件分岐を用意してみました。右のイベント行には全て、Xキーを押した時に主人公が弾を発射する、というイベントが記述されています。

で、これを一行ずつ有効、他行は全て無効にした上で、一つ一つどの状況を判定するのか調べていきました。

 

「object is standing on the ground」

→プレーヤーが地上に着地さえしていれば、静止していても移動していても弾は発射されます。ジャンプ中、落下中は発射されません。

 

「object is jumping」

→プレーヤーがジャンプ中(=上方向に上昇時のみ)のみ弾が発射されます。

ジャンプ中であっても、ジャンプの頂点を過ぎて下降に入ったら弾は発射されません。

 

「object is falling」

→プレーヤーがジャンプしていてかつ、下降中のみ弾が発射されます。

(高所から落下している状態でも同様です)

 

「object is moving」

→プレーヤーが着地している状態で、かつ移動中のみ弾が発射されます。

ジャンプ中は発射されませんが、方向キーを押している間のみ弾は発射されます

 

*ここからは条件反転をした場合です

 

×「object is standing on the ground」

→上昇下降問わず、プレーヤーが着地していない時全て弾が発射されます

 

×「object is jumping」

→プレーヤーが下降中、着地していて静止、又は移動している時に弾が発射されます

 

×「object is falling」

→プレーヤーが上昇中、着地していて静止、又は移動している時に弾が発射されます

 

×「object is moving」

→上昇下降問わずジャンプ中、プレーヤーが着地して静止している時全て 弾が発射されます。

ジャンプ中であっても、方向キーを押している間は弾は発射されません。

 

検証は以上です。

ここから分かった事として、

「object is moving」はジャンプ中、着地中問わず、方向キーを押しているかどうかだけを感知している

という事ですね。

例えば、PMOを使って、ダッシュ中に攻撃ボタンを押した時だけ特殊なアクションをさせたい…という場合などは条件分岐に注意が必要ですね…( ´_ゝ`) 

本日も閲覧ありがとう御座いました。