Unityroomでゲームを公開しました!第二弾

またまたUnityroomさんでゲームを公開しました。

にもつツミツミ

引っ越しの荷物を車に積み上げよう!どこまで高く積み上げられるか!? 10m超えたくらいから画面外になってしまうのはそのうち修正いたします~

よくあるオブジェクトを積んでいくゲームです
これもスマホ向けに作っていたのでキーだけでなくマウスでの操作が可能になっています~

つまずいたところ

よくあるゲームですが物理エンジンの影響でうまく積み上げられなかったりと意外にも障害は多かったです。
つまずいたところを少しだけ解説していきたいと思います

・オブジェクトが移動したら落ちていく

普通にオブジェクトが落ちてきて車に乗せて動く
という動きを実装するとこんな風になるかと思います。

これは落下の速度を遅くするためにRigidbody内のdragの値を大きくしているために起こります。
drag = 空気抵抗が大きいために台座から落ちてしまうというわけです。
落下しているときのdrag = 10f
台座に乗っているときのdrag = 0f
としてやることで台座が動いてもオブジェクトが落ちないようになっています。
具体的には

// コライダーにあたった時に呼び出される関数
//otherには当たったオブジェクトの情報が入る
public void OnCollisionEnter(Collision other)
    {
//当たったオブジェクトのタグが"Base"または"Onbase"の時の処理
        if (other.gameObject.CompareTag("Base")|| other.gameObject.CompareTag("Onbase"))
        {
            rb.drag = 0f;
            this.gameObject.tag = "Onbase";
        }
    }
// コライダーから離れた時に呼び出される関数
    public void OnCollisionExit(Collision other)
    {
        if (other.gameObject.CompareTag("Base") || other.gameObject.CompareTag("Onbase"))
        {
            rb.drag = 10f;
            this.gameObject.tag = "notbase";
        }
    }

タグを指定することでオブジェクトを一括で削除したりカウントしたりできます
今回はあとで機能をつける際のことも考えてタグでの処理にしました。

ちなみにオブジェクトのmass=質量は0.1となっているのですがたくさんオブジェクトが積み重なった時に微妙にずれていくのはなぜなんでしょうか…?
もしわかる方がいたらご教授ください。

・シームレスな演出
これは今回思ったようにできなかったことなのですが、最近のオサレなスマホアプリはシーンの再読み込みなんてナンセンスなことはせずにリトライできますよね。
すごく小さなことですが、ユーザーからするといちいち画面が切り替わって見えるとそこで没入感が損なわれてしまうものです。
今回はシームレスなリトライ処理を実装できるように頑張ってみました。
やったこととしては
・リトライボタンを押したらオブジェクトをすべて破棄する
・高さをリセット
この二つだけです。
実際やってみるとうまく実装ができたのですが。

オブジェクトを破棄するときにDestroyで一括で削除したので何とも味気ないものに…
正直普通にシーン読み込み直してるのと変わってないんでは…

何かこう、ザバァって感じのエフェクトをつけれるように勉強していきたいと思います。

使用したアセット一覧

このゲームで使用したアセットを簡単な紹介とともに紹介します〜


簡単にスマホ向けのバーチャルスティックやボタン操作が実装できるアセット。
キーボードでも操作可能なので便利です。
ジョイスティックは0~1の値をfloatで返してくれるので色々使い勝手が良いです。


公式のテキスト強化アセット。
デフォルトで解像度が低い、改行してくれないなど使い勝手に困るテキスト周りを劇的に改善してくれます。
フォントを追加するのに少し手順を踏まないといけないのが難点です。


コーディングができない人でも簡単にゲームが作れるアセット。
スクリプトを書き慣れている人にとっては出番が少ないかもしれないアセット。
ステージのオブジェクトなどの単純な動きはこちらの方が簡単に管理できるので私はよく使用しています。
変数なども扱えますが私はスクリプトの方が扱いやすいと思っています。


少ないスクリプトで複雑な動きが実装できるアセット。
追加するアセットもスクリプト一つのみなので容量など心配せずに使える優秀なアセット。


ローポリのインテリアモデルアセット。
同じ人からたくさんの種類のアセットが販売されているのでそちらも要チェックです。
モデルの下側にメッシュが貼られていなかったので回転するときは注意です。


アイテムを載せるのに使っていたトラックです。
普通に使いやすいです。


背景のビルなどのモデル
有料版もあるようです。


毎度おなじみの5つのアセットが一つになった個人的にめちゃおすすめなアセットです。
今回はConcave Colliderを使用してアイテムの当たり判定を調整しました。
デフォルトだとboxcolliderで頑張って合わせないといけないところを子のアセットでは一発でやってくれます。
しかもオブジェクトの形にしっかりと沿ってくれるので思い通りの当たり判定がすぐに出せます!
どのくらいすごいかというと下の動画を見ていただければ大体わかるかと思います。

一つ欠点としてはコライダー作成計算するのに時間がかかるため、マシンパワーが足りないとめちゃくちゃ時間がかかります。


トゥーン系シェーダーアセット。種類が豊富なのと使い勝手がいいところがおすすめポイント。
また、細かい数値もいじれます。マニュアルが公式サイトにあるのでそちらを読めば大体わかります。


UIに使えるボタンやアニメーション、ファイルがセットになっているアセット。よく目にする歯車のマーク等いちいちライセンスを確認してダウンロードという手順を踏まなくてもいいのがおすすめポイントです。


BGMアセット。無料なのにループやWAVとOGGなどすごい豪華です。
サイズが500MBを超えるので不要なものは入れないようにしておくといいです。


簡単な道路のアセット。
直線や十字路、T字路など基本的な道路がセットになっています。


みんな大好き公式カメラエフェクトアセット。
簡単にいろいろなエフェクトがつけられますね。
今回は色調を変えてみました。

今後

今後の展開として
前々から言っているスマホアプリなのですが
ミニゲーム集
みたいなのを作ろうと考えていてその一つとして今回このシステムを構築しました。
実際のアプリではマテリアルなど統一感を持たせて作っていきたいと思っています。
絶賛製作中なので随時こちらで情報を流していきたいと思います~

それではよいハッキングライフを~