自作ゲームの大福島

プログラムの使えない素人がCF2.5(インディゲームクリエーター)を使ってゲームを作ってみるブログです

スポンサードリンク

cf2.5 動く床に挑戦! (ちょっと挫折)

f:id:vobo:20151207010518j:plain

ついに姿を現したでござるな忍びの者よ…!!

 

 

ご無沙汰しております。モフヲです。

さてこの数日、新たなギミックとして、横スクロールアクションの定番、「動く床」を作成しておりました。

f:id:vobo:20151207005456j:plain

空中で上下左右に移動しているアレですね。

最初に作ったのは、常に一定の速度で左右に移動を繰り返す最もシンプルなパターンの物を作りました。

f:id:vobo:20151207005507j:plain

イベントソースはこんな感じです。

世の中には「パス動作」という大変便利な機能があるようなんですが、良く分かっていない&移動距離を変数で調整したかったので、全て変数操作で制御しています。

方向フラグ=0→左に移動

方向フラグ=1→右に移動

移動スピード=1フレームに移動するピクセル数

移動時間=移動する距離

この4つの要素を移動タイマーという変数でタイマーを設定して動かすというシンプルな形です。

(主人公の動く床上での移動処理は別のソースで管理)

 

とまあ、これで満足していれば良かったのですが、「いや、やっぱり左右の両端に来たらゆっくり動かしてやる方がそれっぽいんじゃないか?」などと考えたのが間違い。

そこから『左右両端で移動スピードを落とす』という動きを実現しようとしては失敗を繰り返し、結果丸二日かかる事となります。

身の程知らずは実にイケマセン

 

実現出来なかった要因としては、左右両端で移動スピードを落とす動きを実装すると、往復を繰り返す毎に徐々に画面左に軌道がズレていく、という現象が発生し、私には解決する事が出来ませんでした…なのでどうしたかと申しますと、

f:id:vobo:20151207013032j:plain

どうしても左にズレるんなら「左端」を設定した位置(X軸)で強制的に折り返してやりゃいいんじゃね?

と思い立ち、一回目に左端に到達した際のX軸を折り返しの起点として変数に記憶させ、以後、そこに到達すれば強制的に方向を切り替える、という処理を組んでみました。

結果としては、最初の2サイクルは不自然な挙動となるものの、3サイクル目は安定し、左右にズレる現象は収まってくれました。

まあ間違っても人様にお勧め出来る組み方ではありませんし、何より一画面目に移動床の出てくるステージでは明らかに不自然な動きをしてしまいます…

 

とは言え現状これを解決しようとすると肝心なステージ作成が進みませんので、移動床はこれで良いという事にしようと思います。

何、最悪等速で往復するシンプルパターンを使えばいいわけだし…

 

背伸びはしない。それが私のジャスティス。