XaiJu
nalulululuna
nalulululuna

fanbox


ゼロから始めるカスタムプラットフォームの作り方 (前編)

アバターのカスタマイズや、Beat Saber ではカスタムセイバー、カスタムノーツ、カスタムプラットフォームの作成など、ゲーム開発とは関係ない部分で Unity を使う場面が増えています。ゲームは作ったことないけれど Unity はちょっと触れる、という方もいらっしゃるかもしれません。


とはいえ、Unity はいちおう開発ツールですから、触ったことがない、使い方どころか、どうやってインストールするかさえわからない、という方も多いのではないでしょうか。


今回は、ゼロ知識の状態から Unity のインストールを行い、制作物をビートセイバー内に持ち込むところまで、簡単に解説してみようと思います。前編ではごくシンプルなカスタムプラットフォームを、後編 (次回) では無料の Unity アセットを読み込んで手軽にプラットフォームを作ってみます。


とにかく完成品だけ欲しい、という方は一番下までスクロールしてください。

Unity のバージョン

まず、Unity のインストールを行います。ここで重要な点ですが、Unity のバージョンによっては、制作物が Beat Saber で読み込めない形になってしまう場合があります。わたしの経験上、一番問題がなかったバージョンとして、Unity 2019.4.18f1 をおすすめします。


ちなみに Beat Saber (1.23.0 現在) は Unity 2019.4.28f1 でビルドされていますが、それなら 2019.4.28f1 が最適だろう、とはならないので注意です。2019.4.28f1 を使用すると問題が出る場合があるので避けてください。

Unity Hub のインストール

まず、以下の「Unity Hub をダウンロード」をクリックして、インストーラー (UnityHubSetup.exe) をダウンロードします。

https://unity3d.com/jp/get-unity/download


Unity Hub は複数の Unity バージョンや、Unity プロジェクトをまとめて管理するための Hub となるソフトです。


インストーラーのダウンロードが完了したら、それを起動します。[同意する]、[次へ]、と進めて、インストールを完了してください。


Unity Hubを実行にチェックを付けて完了。チェックをはずして完了してしまった場合も、デスクトップにできている Unity Hub を普通に起動すれば大丈夫です。

Unity アカウントの作成

Unity Hub の初回起動時にはファイアウォールの警告が出ますが、[アクセスを許可する] で問題ありません。


起動すると、このような画面になります (環境や設定によっては日本語で表示されているかもしれません)。Unity を使用するにはアカウントが必要なので、アカウント作成を行います。[Create account] をクリックします。


ブラウザが開いて、Unity アカウントの作成画面に移ります。メールアドレス、ユーザー名、パスワード、フルネームを入力して [Create a Unity ID] をクリックします。

よくあるユーザー登録の流れと同じように、このあと入力したメールアドレスに Unity から確認メールが届き、その確認メール内のリンクをクリックして、確認、ログインを行うと登録が完了になります。


最終的に下記のようなアカウント画面が出てくれば OK です。


アカウント登録が完了したら、さきほどの Unity Hub に戻って [Sign in] をクリックします。またブラウザが開きますが、下記のようなメッセージが表示されたら [Unity Hub を開く] をクリックします。


Unity Hub が使用できるようになりました。[Got it]、日本語の場合は [OK] ボタンかもしれませんが、ボタンをクリックします。

Unity Editor のインストール

まだ Hub をインストールしただけで Unity 本体は入っていないので、Unity Editor のインストール画面が出てきます。ただよく見ると、インストールしようとしているバージョンは 2021.3.4f1 で、これは Beat Saber 用には使えません。[Skip installation] (インストールをスキップ) をクリックします。


Unity を使用するにはライセンスが必要、というメッセージが表示されます。今回は無料ライセンス (Personal Edition License) の範囲で使用します。ライセンスの内容、詳細は Unity のサイトでご確認ください。[Agree and get personal edition license] (同意する) をクリックします。


このような画面になるので [Install Editor] をクリック。


[Archive] をクリック。


[download archive] をクリック。


ブラウザが開き、Unity の過去バージョンの一覧ページへと移ります。Beat Saber 用に Unity 2019.4.19f1 をインストールしたいので、まず [Unity 2019.x] をクリックします。


下のほうへスクロールして、2019.4.19f1 の右にある Unity Hub をクリックします。ここで確認メッセージが表示されたら [Unity Hub を開く] をクリックします。


Unity Hub に戻ると、このようなインストール画面になっているはずです。このまま [Continue] (次へ) をクリックします。


チェックボックスをクリックして、[Install]。


するとこの画面に戻りますが、裏ではインストールが進行しています。Install Unity Editor の横の × (右上の Unity Hub の × ではなく) を押して閉じます。


インストールが進行中。待ちます。


[Install complete]、インストール完了しました。

CustomPlatforms mod

これから作成するカスタムプラットフォームの動作確認のため、Beat Saber に CustomPlatforms mod をインストールしておいてください。ModAssistant でインストール可能です。

カスタムプラットフォームのテンプレート

これから Unity を使用してカスタムプラットフォームを作成するわけですが、プロジェクトを一から新規作成するのではなく、雛形となるテンプレートを開いて、そちらを編集していく形になります。


テンプレートは下記のページで配布されています。まず、こちらを開いてください。

https://github.com/affederaffe/CustomPlatforms/releases


[Assets] のところをクリックすると、ダウンロードできるファイルの一覧が展開されます。[UnityProject.zip] をクリックしてダウンロードします。


ダウンロードした zip ファイルを展開すると、中に CustomPlatforms というフォルダが入っています。このフォルダが Unity のプロジェクトになります。


このままだとわかりにくいので、CustomPlatforms フォルダをどこか自分の決めた保存場所にコピーして、名前を変更してください。ここでは適当に C:\test にコピーして、CustomPlatforms_Sample という名前にしました。


新しいプラットフォームを作成するときは、毎回このようにテンプレート (CustomPlatforms フォルダ) をコピーして、カスタムプラットフォームのフォルダを作成してから始めます。

プロジェクトを開く

Unity Hub を開きます。左の [Projects] をクリックして、右上の [Open] の左にある [▼] をクリックして出てくるリストから [Add project from disk] (プロジェクトを追加) をクリックします。


さきほどのカスタムプラットフォームの雛形、ここでは CustomPlatforms_Sample を選択して [Add Project] をクリックします。


このように追加されました。なにやら黄色い!マークがついていますが無視してかまいません。


この CustomPlatforms_Sample をクリックして開くと、このような画面になります。[Choose another Editor version] (別の Editor バージョンを選択) をクリックします。


2019.4.19f1 が選択されていることを確認して、[Open with 2019.4.19f1] をクリックします。


[Change version] (バージョンを変更) をクリック。


[Continue] をクリック。


おなじみの画面?Unity Editor が開きました。Unity の一番下に黄色い!マークがついていますが、このメッセージに関しては無視してかまいません。


もし、このような画面が出たときは [Check for Updates] (アップデートのチェック) を外して、[Skip new version] (新バージョンをスキップ) をクリックします。

Unity でだいじなこと

はじめに「Unity の画面がおかしな状況になって、戻せなくなってしまった」という場合の対処を書いておきます。[Window] → [Layouts] → [Revert Factory Settings] と選択すると、ウィンドウのレイアウトが初期設定に戻ります。覚えておきましょう。


また、ファイルの保存もしておきましょう。[File] → [Save] と選択して (または Ctrl + S)、ファイル名をつけて保存します。次回以降は上書き保存になります。Unity は何の前触れもなく突然エラーで落ちることがあるので、頻繁に保存するようにしましょう。(でもわすれる)


中央の薄い青と灰色が見えている部分は、Unity 上で配置したオブジェクトが表示される 3D 空間です。空間内を動き回るため、これだけ覚えておいてください。

- マウスを右クリックしながらマウス移動: 視点を上下左右に向ける

- マウスのホイール: 視点の前後移動

- マウスのホイールを押しながらマウス移動: 視点の上下左右移動


キーボードでの視点操作も可能です。こちらも知っておくと良いかもしれません。

- オブジェクトを選択してF: オブジェクト付近に視点移動、視点回転

- マウスを右クリックしながらW/A/S/D/Q/E: 視点の前後左右上下移動

- マウスを右クリックしながらShift+W/A/S/D/Q/E: 視点の前後左右移動 (高速)


視点がよくわからないところにいってしまった場合は、前述の [Revert Factory Settings] で初期位置に戻すことができます。


なお、好みによりますが、ここでは Unity は英語のまま使用します。日本語の言語パックをインストールすると日本語表示も可能ですが、本来訳すべきでない部分 (コンポーネント名やプロパティ名など) までが日本語になってしまうので翻訳の裏を読む必要があったり、情報を検索するときに英名がわからないと困る (日本語名での情報はかなり少ない)、というのが理由です。

カスタムプラットフォームを作成する

まず、カスタムプラットフォームのルート、土台、階層の起点となる部分を作成します。プロジェクトのルート (ここでは Test というファイル名で保存したので、Test になっています) をクリックして [GameObject] → [Create Empty] を選択します。


GameObject だとわかりにくいので名前を変更します。GameObject を右クリックして [Rename] (または GameObject を選択して F2) で名前を変更できます。好きな名前でかまいませんが、ここでは TestPlatform としておきました。


TestPlatform (カスタムプラットフォームのルート。以降では TestPlatform と書きますが、自分で付けた名前に読み替えてください) を選択して、画面の右を見ると下のような表示になっているはずです。


Transform というのは座標情報をまとめたもので、TestPlatform の位置が x, y, z = 0 (原点)、角度も x, y, z = 0 (回転なし)、大きさは x, y, z = 1 (等倍)、という意味になっています。なお、x は左右、y は上下、z は前後 (奥行き) と考えてください。


もし、Test Platform がこのようになっていない場合は、下と同じになるよう変更しておいてください。


この TestPlatform ですが、現時点では、ただの GameObject をリネームしただけです。これをカスタムプラットフォームとして出力できるようにします。


TestPlatform を選択した状態で、[Add Component] をクリックします。そのままテキスト入力欄にカーソルが移るので、「cu」と入力するとリストが絞り込みされます。その中から [Custom Platform] を選択します。


このようになります。ここでは以下のような設定が可能です。

Plat Name: プラットフォームの名前

Plat Author: プラットフォームの作者名

Icon: アイコン

Hide Environment: デフォルトのプラットフォームオブジェクト (プレイヤーの足場や、ノーツが飛んでくるレーン、レーザーなど) のどれを非表示にするか

- Highway: ノーツが飛んでくるレーン

- Towers: 左右にあるタワー状の建物

- Default Platform: プレイヤーの足場

- EQ Visualizer: 音に反応して大きさを変えるオブジェクト (イコライザー)

- Small/Big Ring: 回転するリング状のオブジェクト (小/大)

- Back Columns: 背後にある柱状の建物

- Back Lasers: 奥に光る ^ のような形のライト

- Double Color Lasers: 正面に並ぶレーザー光 (奥)

- Rotating Lasers: 正面に並ぶレーザー光 (回転)

- Track Lights: トラックの左右にあるライト (ないプラットフォームも)


ここでは下のように入力してみます。Plat Author はご自分の名前に置き換えてください。Hide Environment すべてにチェックをつけているので、すべてのオブジェクトが非表示になった、なにもないプラットフォームができます。


下の [Export] ボタンを押すと、カスタムプラットフォームの plat ファイルとして出力されます。ファイル保存ダイアログが表示されるので、Beat Saber のインストール先にある CustomPlatforms フォルダに保存してください。


Steam 版 Beat Saber のデフォルトインストール先の場合は

C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\CustomPlatforms

となります。


成功するとこのように「Exportation Successful!」と表示されます。現在はまだ何もしていないため基本的にエラーは起こりえませんが、プラットフォームを作る過程で Unity 内のファイルやオブジェクトがエラーを起こした状態になっていると、出力に失敗します。その場合、まずエラーを解決させてからでないと出力できません。

動作確認 (Nothing)

今しがた出力した Nothing.plat の動作確認をしてみましょう。Beat Saber を起動して CustomPlatforms の設定を開くと、Nothing がリストに入っています。これを選択して譜面をプレイすると、設定した通り、プレイヤーの足場もレーザーも何もないプラットフォームになっているのがわかります。

床を作る

つぎは床を作ってみましょう。TestPlatform を右クリックして、[3D Object] → [Plane] (平面) を選択してください。余談ですが、ただの平面を作るときは [Quad] (四角形) のほうがポリゴン数が少なく済むのですが、今回の用途では Quad ではうまくいきませんでした。(おかげでここ以降、ぜんぶ書き直して、スクリーンショット撮りなおすことに…)


Plane が追加されましたが、もっと大きくしようと思います。Plane を選択して Transform を変更しましょう。これを…


このように変更します。Scale に 100 を入れて大きさを広げました。もし Position と Rotation が 0 でなければ、すべて 0 にしておいてください。

鏡面にする

次は、Plane を選択した状態で、右下の [Add Component] をクリックします。そのままテキスト入力欄にカーソルが移るので、「mir」と入力するとリストが絞り込みされます。その中から [Track Mirror] を選択します。


このように Track Mirror が追加されます。これにより、このオブジェクトは Beat Saber 内ではプレイヤー足場の鏡面床と同じような表示がされるようになります。

出力

ここまでできたら、カスタムプラットフォームのファイルを出力するため、再度、TestPlatform を選択します。


Plat Name を変更します。今回は MirrorFloor としました。また Hide Environment も、Hide Back Lasers、Hide Double Color、Hide Rotating Lasers のチェックを外して、一部レーザーを表示するようにしました。


[Export] をクリックして、Beat Saber の CustomPlatforms フォルダに保存します。

動作確認 (MirrorFloor)

巨大な鏡面床があるプラットフォームが完成しました。なお、ビートセイバーの設定で反射 (Reflection) 無効にしてあると動作しません。

完成品

今回作成したプラットフォーム 2 つ、Nothing.plat、MirrorFloor.plat の完成品を置いておきます。

CustomPlatforms

おわりに

今回はごくシンプルなプラットフォームを作成しただけでしたが、Unity からカスタムプラットフォームを出力する流れが、なんとなくわかったのではないかと思います。次回はもっと複雑なオブジェクトを Unity に持ち込んで、それをプラットフォームとして出力し、Beat Saber に持ち込んでみたいと思います。

ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編) ゼロから始めるカスタムプラットフォームの作り方 (前編)

Comments

ありがとうございます!グリーンバックプラットフォームはどこかにあったような…。でも自分で作ってみるのが理解がはやいですね!おそらく後編のシェーダーが必要かと思いますが、がんばってください!

なるるるるな / NALULUNA

読んで最後までやってみてくださってありがとうございます。ティルエさんのその何でもチャレンジしてみる精神、すきです!ぜひ後編もがんばってみてください!

なるるるるな / NALULUNA

Thank you! I'm glad the article is helpful.

なるるるるな / NALULUNA

Thank you for the detailed guide; this is exactly the information I needed.

やった~♪ 実は作ってみたいプラットフォームがあったんです! 上も下も右も左も、全部緑(RGB:0,255,0)にすればグリーンバックになるのかな?って。 連休を使ってやってみます!(≧▽≦)

Neko-Hangten

Unityバージョンでの違いを未だ理解できてなかったので、これを使って作成すればいいのかぁ!とかいろいろ理解ができてよかったです。ミラープラットフォームまでちゃんと迷わず出来ました!VRM・Vroid着せ替えとかもUnityバージョンあったりするのかもしれないけど、テキトーにやってるからここもしっかり押さえておきたいですw 記事探したり・読んだりすると、眠気に襲われてしまうけど、なるるなさんの記事は楽しく見れるのでささっとできてしまいます!ありがとうございます!

ティルエ

ありがとうございます。初めてのインストールだと、アカウント作成やバージョン選択の部分などわかりにくいかと思って、一からの内容で書いてみました。

なるるるるな / NALULUNA

Unity触り始めた人にも優しい解説、さすがです👏

トウモロコシ

読んでくださってありがとうございます!アバター改変にくらべると簡単ですよ!

なるるるるな / NALULUNA

先日Unityでやっとアバターさわり始めた超初心者ですが手取足取りの説明ありがたいです。いつかは自分のカスタムプラットフォーム作ってみたいです!

東京にゃんこTokyoCat

はやい!試してくださってありがとうございます!お役に立てたらうれしいです!

なるるるるな / NALULUNA

先生、できました

JAN


More Creators