前回弾幕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だけで処理されているよう。
ChromeはWebGLのGPU実行をサポートしているはずで、他のWebGLゲームだとGPUで動くのでなぜなのかと設定みなおすもわからず。 そのため性能対策のために以下実施
- 解像度落とし
サイズを600x450など落としてビルド。あまり効果なし
- FPSを下げる
以下を入れて、60fpsから30fpsへ。 framerateだけだと効果なし。vsyncは要確認
QualitySettings.vSyncCount = 0; Application.targetFrameRate = 30;
Chromeを更新するとなんか早くなる。。 chrome更新されたからというより、タブ多数開いていて、 ハードウェアアクセラレーションでGPUが使われ、ゲームにGPUが使われなかったことが原因と推測。
出力
トラブル発生し、ゲームとして動かなく、時間を使ってしまいましたが、なんとか以下まで作成。 少しはゲームらしく。
既知バグ
ボス倒した後に弾を撃ち込むと4000スコア稼げること。ボス倒すと1000なのでそのあと3000スコア稼いでいる計算。スコア算出方法見直さないとか
あとがき
というわけで、なんとかひと段落したのでメモ書き。 次回は以下などもシステムに取り込み、作成完了させたい。
今回入れなかったもの
- パワーアップアイテム
- レーザー作成
- ステージ
- クリア報酬
WebGLのゲーム立ち上げ方調査。ビルドしたもののindex.html実行しても動かず。 サーバ―起動が必要?いちいちbuild and rundしないでもでも実行可能?