初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第5日目
「上手くいっていたものを崩す勇気は100倍じゃ足りない」
こんばんは。
色々な人のゲーム開発体験談を見ていると、ゲームそのものよりも設定画面やその他の機能を作る方が時間がかかると言っていて戦々恐々としている先端のマーシーです。
- 「上手くいっていたものを崩す勇気は100倍じゃ足りない」
- 1.床移動システムの修正
- 2.ゲームの方向性
1.床移動システムの修正
前回までの作業で床の自動生成スクリプトを作成しましたが、その後に床の移動速度を上げて試してみました。
すると一定速度以上からプレイヤーが踏んでいる状態でも消えてしまうことが判明。
慌てて床の枚数を増やす処置を行いました。
そこまでは単純な修正で済んだのですが、結果的に新しい不具合が起きました。
その様子がこちら。
無限床の生成で出来る謎の隙間に手間取ってた
— 先端のマーシー (@Masashi_Sentan) 2021年9月10日
これUpdateで回してる床の速度と、一定間隔の座標で消滅するっていう静的と動的の兼ね合いの悪さが影響してる気がするなぁ...#Unity初心者 #プログラミング pic.twitter.com/QYuT3kKCVf
床そのものが移動しているので、生成のタイミングがズレてしまうことがあります。
プログラムなので寸分違わず一定速度で動作するイメージがありますが、実際には動画の様にパフォーマンスがその都度変わっています。
しかしこれは私のプログラムが欠陥品と言えるでしょう。
スマートフォンは様々な機種や年代がある為、そのスペックによってゲームそのものが崩壊してしまうのはあってはならないこと。
このままだと、スペックが十分でない端末や動作が不十分だった場合には床が一定間隔で抜け続けるという事態に。
とりあえず調べつつの修正方針としては以下のものを建てました。
- 床の枚数を減らす
- 床の更新タイミングの修正
- Prefabでの生成・削除の廃止
床の枚数を減らすことですが、単純に1枚当たりの長さを2倍にして更新する頻度を減らしてみました。
また更新タイミングですが、前回までは一定の座標を通り過ぎると削除して新しい床を作っていました。
ですが座標で削除・生成をしてしまうと1枚の床がズレたらその後の全てがズレてしまうと考えました。
そこで考えたのが時間での処理。
小学校からおなじみの距離/速度でScene上にいて欲しい時間を求め、座標での更新が上手くいかない場合には時間で更新するタイミングを作りました。
そして最後にPrefabの削除。
「え、前日にあんなに得意げに語っていたのに!?」と思う方もいるでしょう。
いやほんとうに。
異を痛めながらの決断でした。
というのもPrefabの場合、Destroy処理をしてしまうと重いという記事を見かけたのです。
もちろん仕組みを変えるとはいえ完全に無駄にする訳ではありません。
ギミックや障害物なんかを作る時に応用しようと思いますが、ステージは割と更新頻度が多いので出来るだけ軽くしたいという思いでした。
そして修正した後の動作がこちら。
無限ステージ生成、中々良ろしいんじゃないでしょうか#Unity #unity3d pic.twitter.com/CbIxc8wfK0
— 先端のマーシー (@Masashi_Sentan) 2021年9月10日
今の所は安定してそうですね。
続きを読む
初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第4日目
「想定通り実行されたものを見た時の喜びは、常に最高」
え......あと10日しかないんですか!?
ということを重く認識しました、先端のマーシーです。
- 「想定通り実行されたものを見た時の喜びは、常に最高」
- 1.移動方法の確認
- 2.ステージ床の自動生成
1.移動方法の確認
骨組みとなるゲームシステムの要件で残すはステージとギミックの自動生成です。
ギミックは段階的に追加していくつもりなので、先ずはステージから。
前の記事でも書かせて頂いたのですが、基本的にはステージそのものが動く形にしてプレイヤーは横移動のみで組み立てていきます。
3日目の記事はこちらから。
この作業はとても簡単。
スピードとなる変数は様々なスクリプトから変更、取得すると思うのでpublicで設定。
Update(毎フレーム実行)の中で床のz座標のみを、スピードとTime.deltatimeを掛けて求められる距離だけ動かしていきます。
以上で床の移動は簡単に実装できますね。
こんな感じで動いてます。
走る系ゲームの移動ってキャラクターを動かすのかステージを動かすのか問題が永遠の課題みたいなところありません?#Unity #unity3d #プログラミング pic.twitter.com/DND1XXDr75
— 先端のマーシー (@Masashi_Sentan) 2021年9月9日
ただこのままだと床が一枚のみで直ぐに終わってしまいます。
プレイヤーが横移動できないので、抵抗する術もありませんね。
初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第3日目
「何気に一番迷うのはレイアウトかもしれない」
ワクチンの副反応から漸く回復した先端のマーシーです。
もう3日目になるのか、というため息の量が増えてきましたね。
- 「何気に一番迷うのはレイアウトかもしれない」
- 1.画面のレイアウトについて
- 2.移動方法の決定
1.画面のレイアウトについて
何はともあれ作業を進めないと永遠の2週間になりそうなので、とりあえず基本的な画面構成を考えていくことにしました。
Synty Studioさんのアセットから引っ張ってきたモデルを仮置きして、とりあえず地面をUnity標準機能のPlaneで作ってみることにしました。
キャラクターにRigidbody(重力)やCollider(衝突判定)を付けて...
カメラの角度やキャラクターの大きさで個人的に適当な位置には配置できました。
(UIやボタンなどを配置する時があればその都度変えていくかもしれません)
ここまでの作業が数十分で出来るのがゲームエンジンもといUnityの素晴らしいところですね。
基本的にはこの画面を中心にゲームシステムを肉付けしていきます。
続きを読む