初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第4日目
「想定通り実行されたものを見た時の喜びは、常に最高」
え......あと10日しかないんですか!?
ということを重く認識しました、先端のマーシーです。
1.移動方法の確認
骨組みとなるゲームシステムの要件で残すはステージとギミックの自動生成です。
ギミックは段階的に追加していくつもりなので、先ずはステージから。
前の記事でも書かせて頂いたのですが、基本的にはステージそのものが動く形にしてプレイヤーは横移動のみで組み立てていきます。
3日目の記事はこちらから。
この作業はとても簡単。
スピードとなる変数は様々なスクリプトから変更、取得すると思うのでpublicで設定。
Update(毎フレーム実行)の中で床のz座標のみを、スピードとTime.deltatimeを掛けて求められる距離だけ動かしていきます。
以上で床の移動は簡単に実装できますね。
こんな感じで動いてます。
走る系ゲームの移動ってキャラクターを動かすのかステージを動かすのか問題が永遠の課題みたいなところありません?#Unity #unity3d #プログラミング pic.twitter.com/DND1XXDr75
— 先端のマーシー (@Masashi_Sentan) 2021年9月9日
ただこのままだと床が一枚のみで直ぐに終わってしまいます。
プレイヤーが横移動できないので、抵抗する術もありませんね。
2.ステージ床の自動生成
基本的にUnityでは決められたオブジェクトを自動的に生成する場合、Prefabという機能を使用すれば楽だと思います。
今回のケースでは一枚の床をPrefab化(設計図のようなもの)し、足りなくなれば次々と追加していくスクリプトを書きます。
数学的な処理方法があまり得意ではないので今回はUnity上の座標を基準に生成や、通り過ぎた床の消去などを管理しましょう。
簡単な処理の流れです。
- 座標A(+) / 新しい床を生成する
- 座標B(+) / 床がプレイヤーに向かって移動する
- 原点(±0) / プレイヤーが床を踏む
- 座標C(-) / 通り過ぎた床が消滅する
……こう書いてみると逆に分かりづらいかもしれない。
とりあえず移動するスクリプトが付いた床をPrefab化し、それを生成・消去する動作を管理するスクリプトを作りました。
挙動としてはこうなりました。
ランニング系ゲームでよくある床の自動生成・削除はこんな感じかな?
— 先端のマーシー (@Masashi_Sentan) 2021年9月9日
スピードと生成する距離を考えればそれっぽくなりそう#Unity #unity3d #プログラミング pic.twitter.com/AvqHQZETvf
床の移動がゆっくり過ぎることと、生成される距離が近すぎますね。
ただそれ以外は問題なく動きそうです。
これを応用する形でギミックなどを増やしていけば障害物避けゲームは作れそうですね。
今日は何となく想定していた範囲までを終わらせることができてほっとしました。
何度かエラーとの殴り合いは始まっていますが、やっぱり思い通りに動いた時の喜びは格別ですね。
それではまた5日目でお会いしましょう。
Twitterのフォローよろしくお願いします!!!