先端のマーシーblog

初心者によるゲームプログラミング生活

初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第8日目

「細かい部分の修正には終わりがない」

 

こんにちは。

せめてあと1週間は欲しいと毎日の様に思い始めた先端のマーシーです。

 

 

 

1.速度変更の統一

小難しいタイトルを付けましたが、簡単に言うと「道路や背景、ギミックで使用する速度は全て同じものを参照しよう」ということです。

 

道路だけ高速に動いても背景がゆっくりであれば錯覚が起こらずに変なゲーム体験になってしまうので、この部分は必須だと考えました。

 

道路の生成には「RoadGenerator」、背景ブロックは「GameDirector」といったスクリプトに分けていたのですが、速度の参照元はGameDirectorの方に一本化します。

 

参照されるタイミングとしてはこんな感じ。

  • Start(起動した時に、初めの一度だけ実行される)で一度参照。
  • GameDirector側で値が変更された時に参照

Startは初めの速度に用いるので必要ですが、値が変更された時にも各スクリプトに参照してもらわないと新しく生成される道路や建物にしか反映されません。

 

ただしUpdateで毎フレームGetComponentを様々なオブジェクトがしてしまうと一気に処理が重たくなってしまいそうだと考えました。

 

なのでここからは非効率な自分流の解決方法になります。

あまり綺麗な方法ではなく推奨はしませんのでご了承ください。

 

  1. 空のGameObjectを作成する
  2. GameDirectorでGameObjectを取得し、値の変更時にGameObjectの座標を変える
  3. スクリプトでもStart時にタグ検索でGameObjectを取得する
  4. スクリプトでGameObjectを監視し、座標の変更があった時だけ速度をGameDirectorから参照する
  5. GameObjectを元の位置に戻す

 

という方法で解決しました。

 

 

無理やり感は否めないですが、とりあえずやりたいことの実現は出来てそうですね。

 

ただしこの部分でなく前回までの範囲ですが、特に速い速度から遅い速度になった時に穴が開いてしまっています。

背景であれば得に気にすることではないのですが、道路の部分だけは計算して修正した方が良さそうですね。

 

今回の進捗としてはこんな感じです。

とりあえず方針としては背景ブロックの種類増加、道路生成の再計算、ギミックを2.3日の間に完成させれば光明が見えてきます......!

 

Twitterのフォローも是非よろしくお願いします、励みになります!

twitter.com