https://unityroom.com/games/ebicochineal_unity1week202209
Unity1Week お題「ためる」
エビタワーという登山ゲームを作りました
jumpkingのようにジャンプして頂上を目指すだけのゲームです
E512TileMap
いつもと同じでE512TileMapという自作のタイルマップシステムを使いゲームを作ることにしました
このE512TileMapはUnity標準のタイルマップの開発が始まったのと同時期から作り始め
たまにいじったりだらだら作っていて
そのうちUnity標準のタイルマップシステムに乗り換えるつもりでしたが
Unityにタイルマップ機能が搭載されたのは発表から数年経っていたころでした
そのころには自作タイルマップの方もある程度使えるようになって愛着も出てきて捨てられず
今ではこのタイルマップを使ってのゲーム制作しかしていません
前回の参加の時の速度が環境によって変わるバグ
直したつもりでしたが
実際にプレイされているのを見ていないので不安でした
今回のプレイ動画を見て問題無いようでした
Update関数が自身のWebブラウザのフレームレートが60に固定されていてWebGLだとUpdateでも60固定なのだと勘違いしたのが原因でした
今回はFixedUpdateを使いKeyUpなどの入力処理はUpdateを使いました
今回作った山登りゲーム
ためてジャンプして登っていくだけなので
E512TileMap/SimpleCharacterControllerを少し修正してキャラクターコントローラーを作ってしまえば
ステージ作成だけで終わるので簡単に作れてしまいます
参加するたびに作るゲームが単純化してる感じが少しします
jumpkingはプレイしたことがありません
vtuberの配信で少し見たことがある程度の知識です
溜めすぎると真上にジャンプ
上の階の状態を確かめるのに必要そうだった
溜めるキャンセルも必要そう
溜めているときに他のボタンを押すのは少ししんどいので
真上にジャンプすれば無害だし2つ同時に解決できるのでこの方法にしました
ただそのせいで最大ジャンプが出しづらくなったので1よりも2よりも3の方がため時間が長いとかにした方が良かったかもしれない
難易度を下げるため軌道を可視化
ジャンプ軌道予測に顔から出るエビの尿だという設定を付けました
また「ためジャンプ」の以外にも「ためる」を使いたかったので
途中にオレンジジュースを配置しましたが
プレイした人にはマグマだとか油の「罠」に見えたようで上手く使ってもらえませんでした
このオレンジジュースで体にオレンジジュースを溜めると尿がオレンジ色になります
このオレンジ色の尿は背景に水色でも見ることができ
この塔の途中から壁が崩れているところがあるので飲まないと軌道が分からなくなるという感じです
体に溜めるという設定なので出しすぎると水色に戻ります
水色に戻った頃に到達していそうな階層は壁が抜けている個所も少なくなるようにしてあります
エビにライトが付いており壁と尿は光の影響をうけます
それによって尿が見えやすかったり見えづらかったりします
光りの影響をうけなくすることもできましたが遠いものが暗く見えなくなる感じも良かったので
光の影響はそのままにして壁が抜けているなら水色は最大に明るくし完全に見えないようにオレンジ色なら逆に暗くしてよく見えるようにしています
モバイルの対応
前日に余裕をもって完成しアップロードも終えスマホでも確認してみました
スマホで警告は出るもののプレイすることができ指定した解像度と違う解像度になってしまうらしく見えてほしくないとこまで見えていた
上の階が見えるとか
なのでモバイルの対応ついでにフルスクリーンの対応をすることにしました
まずレンダーテクスチャーにunityroomで指定した大きさと同じ解像度で出力してQuadオブジェクトにそれを張り付けて別カメラで映し画面サイズに応じてQuadのサイズ調整をしました
スクリプトをQuadに追加してサイズ調整します
float t = this.camera.ScreenToWorldPoint(new Vector2(0f, 0f)).x * -2f;
this.transform.localScale = new Vector3(t, t*0.5625f, 1f);
このままだと画面が横長すぎると不具合が出るので
float a = (Screen.width - (Screen.height*1.7777f))*0.5f;
float x = a > 0 ? a : 0;
float t = this.camera.ScreenToWorldPoint(new Vector2(x, 0f)).x * -2f;
this.transform.localScale = new Vector3(t, t*0.5625f, 1f);
あとは入力で画面の左側で移動と右側でためとジャンプを追加しました
バグ
エビ以外表示されないというバグがあるらしい
もしかなりの割合そうなってしまうならE512TileMapがさらにゴミになってしまうので様々な環境で試してみました
WindowsPCでブラウザ3種、UbuntuPC、Android5.0、Android9.0のChromeブラウザと知り合いにipadなどでも試してもらいましたがバグが発生しませんでした
とりあえずこれだけの環境で動くなら安心かなと思います
あとタイトルロゴで止まるのかゲーム画面なのかもよく分かりません
ゲーム画面だとしてエビが表示されるのに背景が表示されないということは
タイルマップの生成に失敗していそうなきがします
シェーダー関係もあやしいけどタイルマップとエビのシェーダーはほぼ同じなので確率は低そう
バグ2
画面のちらつき
プレイ動画を見ていたら自分のゲームだけちらつきが発生していた
おそらくモバイルに対応したときに使ったレンダーテクスチャーが原因だと思う
自分の環境や知り合いの環境では正常で再現できず
調べてもアンチエイリアシングオンだと発生するくらいしか出てこない
映像が乱れているというよりレンダーテクスチャーを張り付けたQuadが見えてない感じがした
UpdateでQuadのローカルスケールを毎回書き換えてはいるけど前フレームと同じ画面サイズなら問題ないはず
そういえば
Unity1Weekでよく使われるランキングの最大文字数の初期値が10文字なので名前が入らなくて
ランキングではebi5126を使っています
2022/09/25 マルチプレイ化
評価期間が終わったので他人の位置が分かるものをアップロードしたところセキュリティエラーが出た
unity2018なのでpun2を使用
プロトコルをWebSocket Secureにしないとダメらしい
TCP、UDPを選んでると自動てきにWebSocket SecureになるらしくてWebSocketにしてるとダメだったらしい
https://twitter.com/ebicochineal/status/1570919016813965312
コメント
コメントを投稿