moao blog

生活記録

弾幕STG作成試み 2

前回弾幕STGのためしを作成。今回も引き続き、作成進めます。

タイトル/システム

タイトル画面について、Unity上の画面とビルド後のwebGL画面でサイズが異なる現象が発生。 以下のようにUIスケールモードをビルドの設定に合わせれば合致させれました。

しかし、タイトルを別シーンで作成することについて、PC上のゲーム画面だと問題なく動きますが、 ビルドしたあとだとうまくいかず。。なぜかボタンがクリックされずに進みません。

ビルド設定で、タイトルシーンもゲームシーンも追加しているのに。。

諦めて、同じシーン内でタイトルシーンを表示、非表示することで再現することに。 ただこの場合、リトライでシーンごと再読出しすると、タイトル画面にもどるという難点も

当たり判定

当たり判定を赤四角追加して表示させ、プレイヤーの子要素に。 当たり判定自体はコライダーのスケールを狭くすることで見えるように当たり判定を設定可能

ウェーブ

ステージオブジェクトで時間で敵キャラとボスを生成。 ボスはクリア条件にしており、プログラムの構成上、無効から有効で生成するような構成。 普段はウィンドウ上のほうに配置して、そこから降ろす。

ボス

ウェーブの最後に登場するように設定。 弾幕を自らはり、当たり判定も実施。

クリアウィンドウも自身で表示。

boss ダメージバーは以下参考に実装。 ボスが現れて特定の位置に来たら表示するように設定 https://dianxnao.com/unity%EF%BC%9Aslider%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%9C%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%A9%E3%81%AEhp%E3%83%90%E3%83%BC%E3%82%92%E8%A1%A8%E7%8F%BE%E3%81%99%E3%82%8Bc%E3%82%B9%E3%82%AF/

弾幕

ひとまず以下三つを実現。

  • 通常弾

下向きに放出するだけ

  • 円形弾

角度で放出するようにして実現。 3Wayは120と度ずつずらして放出。角度を10度など割り切りる値で加算していくと安置ができるので、7度など割り切れないように設定。放出元を移動しながらだしていくとよい感じに。

  • 自機ねらい

以下参考にプレイヤーと自身の角度を導きだし、自機狙い作成。

 http://ktstg.blog.shinobi.jp/Entry/974/

これを参考にホーミング弾を作ってもよさそう。この弾は消せないときついから、当たり判定つけたり、時間制限でまっすくとぶようにしないといけないだろう。

  • ランダム段、

ランダムに飛ばす。

あらすじの表示

UI textで。大きいテキスト作成したらスライドすればよい。 TextProで日本語対応は以下のようにウィンドウ->TextMeshPro->Font asset Creatorでtif,txtを読み込ませてアセットフォント作成することが必要。

https://qiita.com/kpn8885/items/100b6917ef655767cd3c

クリア画面

ボス倒したら、表示されるように設定。 リトライ同じ

性能問題

webGLを実行すると異常にかくつく問題が発生。FPSの表示が手間なので測れていないが、恐らく10FPS近く。タスクマネージャで見るとCPUだけで処理されているよう。

ChromeWebGLGPU実行をサポートしているはずで、他のWebGLゲームだとGPUで動くのでなぜなのかと設定みなおすもわからず。 そのため性能対策のために以下実施

  1. 解像度落とし

サイズを600x450など落としてビルド。あまり効果なし

  1. FPSを下げる

以下を入れて、60fpsから30fpsへ。 framerateだけだと効果なし。vsyncは要確認

QualitySettings.vSyncCount = 0; Application.targetFrameRate = 30;

Chromeを更新するとなんか早くなる。。 chrome更新されたからというより、タブ多数開いていて、 ハードウェアアクセラレーションでGPUが使われ、ゲームにGPUが使われなかったことが原因と推測。

出力

トラブル発生し、ゲームとして動かなく、時間を使ってしまいましたが、なんとか以下まで作成。 少しはゲームらしく。

unityroom.com

既知バグ

ボス倒した後に弾を撃ち込むと4000スコア稼げること。ボス倒すと1000なのでそのあと3000スコア稼いでいる計算。スコア算出方法見直さないとか

あとがき

というわけで、なんとかひと段落したのでメモ書き。 次回は以下などもシステムに取り込み、作成完了させたい。

今回入れなかったもの

  1. パワーアップアイテム
  2. レーザー作成
  3. ステージ
  4. クリア報酬

WebGLのゲーム立ち上げ方調査。ビルドしたもののindex.html実行しても動かず。 サーバ―起動が必要?いちいちbuild and rundしないでもでも実行可能?