前回は単純に同一シーン内でのワープ方法について考えてみたけど,WebGLはデータ容量をなるべく抑えれるに越したことはないので,シーンを別にしたワープ方法を考えてみる.というか単純にこの場合はWebGLにおけるシーン移動になりますね.

今回以下のブログの記事も参考にして,シーン移動を実装してみました.

https://nekojara.city/unity-opennewtab

この機能を実現するための流れは以下のような感じ.

「WebGL(ブラウザ)上でゲームを操作 → Playerがワープゾーンに侵入 → 新しいウェブページが開く」

WebGLで新しくウェブページを開くためには javascriptのlocation.hrefを使います.

ただし,Unity上でJavascriptの関数を扱うためにはちょっと特殊な処理が必要です.

まずは以下の.jslibのファイルを作成しました.

詳しい説明は上記で紹介したブログを参照してください.

次に,C#のコードを作成.

using System.Runtime.InteropServices; の記述を忘れずに.

[DllImport(“__Internal”)]の部分で先ほどの.jslibのファイルで記述したJavaScriptの関数と結び付けています.このC#のコンポーネントをワープゾーンに該当するオブジェクトに付けてあげれば完成.OnTrrigerの関数を使っているので,ワープゾーンのオブジェクトにはColliderをつけて,Is Triggerをしっかりと有効にするようにしましょう.今回は階段の前に透明なオブジェクトを作成.

ワープ用コンポーネントに移動先のURLを指定して,この状態でまずは2階部分はWebGLとしてビルド.

次に移動先である1階部分を作成してビルド.1階部分は指定したURL上にアップロードすれば完了.

2階から1階にワープする様子は以下のような感じ.

個人的にはこちらの方が前回作成したものよりワープ感あって好き.

という事でしばらくこんな感じでワープしようかなと思います.

投稿者 horseshoe

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です