【作品紹介(Unity)】TOYAMA by ModelingX-JP

Unity

はじめに

概要

作品名TOYAMA by ModelingX-JP
制作期間2023.01.27~2023.06.24
(約5ヶ月)
制作形式受注制作
受注金額0円
当作品は株式会社 ModelingX の所有物

備考

  • 当作品は個人制作ではなく株式会社 ModelingX での自社開発に当たるため、株式会社ModelingX の所有物である
  • ドームテントや天門橋、高台などの3Dモデルは他者に依頼して制作して頂いた物である
  • このワールドはグラフィックではなくギミック・性能を重視したワールドである

リンク

PV

グラフィック修正前

グラフィック修正後

内容

出来るようになった事

  • [UdonBehaviourSyncMode()]」を使用した、クラスの同期の可否の設定
  • VRCInstantiate()」を使用した、ゲームオブジェクトの生成
  • VRCPlayerApi.GetTrackingData()」を使用した、プレイヤーのアバターの各部位の情報の取得
  • VRCPlayerApi.TrackingData.position」を使用した、プレイヤーのアバターの各部位の座標の取得
  • VRCPlayerApi.TrackingData.rotation」を使用した、プレイヤーのアバターの各部位の角度の取得
  • DateTime.Now」を使用した、現在時刻の取得
  • DateTime.ToString()」を使用した、時刻の表示形式の変更
  • Array.Copy()」を使用した、配列の複製
  • VRCPlayerApi.GetPosition()」を使用した、プレイヤーの座標の取得
  • [UdonSynced]」を使用した、同期変数の登録
  • Networking.IsOwner()」を使用した、「そのゲームオブジェクトの所有者がローカルプレイヤーかどうか」の取得
  • RequestSerialization()」を使用した、変数の同期の要請
  • VRCPlayerApi.IsValid()」を使用した、「プレイヤーが有効かどうか」の取得
  • OnPlayerJoined()」を使用した、新たにプレイヤーが入室した際の処理の記述
  • DateTime.UtcNow.Ticks」を使用した、基準時刻からの経過時間の取得
  • OnPlayerLeft()」を使用した、プレイヤーが退室した際の処理の記述
  • OnDeserialization()」を使用した、同期変数の値が変更された際の処理の記述
  • string.IsNullOrEmpty()」を使用した、文字列の状態(空or空白)の取得
  • DateTime.ToLocalTime()」を使用した、現地時刻への変換
  • Networking.SetOwner()」を使用した、ゲームオブジェクトの所有者の設定
  • OnPickupUseDown()」を使用した、ローカルプレイヤーがゲームオブジェクトを掴んでトリガーを押した際の処理の記述
  • OnPickupUseUp()」を使用した、ローカルプレイヤーがゲームオブジェクトを掴んでトリガーを離した際の処理の記述
  • VRCPlayerApi.playerId」を使用した、プレイヤーIDの取得
  • VRCPlayerApi.GetPlayerById()」を使用した、プレイヤーIDによるプレイヤーの取得
  • VRCPlayerApi.GetPlayerCount()」を使用した、現在のプレイヤー数の取得
  • VRCPlayerApi.GetPlayers()」を使用した、Player 型の配列の取得
  • VRCPlayerApi.SetVoiceDistanceNear()」を使用した、近距離での音声の大きさの設定
  • VRCPlayerApi.SetVoiceDistanceFar()」を使用した、遠距離での音声の大きさの設定
  • VRCPlayerApi.SetVoiceVolumetricRadius()」を使用した、音声の大きさが変化する距離の設定
  • OnPickup()」を使用した、ローカルプレイヤーがゲームオブジェクトを掴んだ際の処理の記述
  • OnDrop()」を使用した、ローカルプレイヤーがゲームオブジェクトを離した際の処理の記述
  • Interact()」を使用した、ローカルプレイヤーがゲームオブジェクトを選択した際の処理の記述
  • SendCustomNetworkEvent()」を使用した、RPCの実行
  • Array.IndexOf()」を使用した、配列の要素番号の取得
  • LineRenderer.GetPosition()」を使用した、線の座標の取得
  • LineRenderer.startColor」を使用した、線の描画開始時の色の取得・設定
  • LineRenderer.endColor」を使用した、線の描画終了時の色の取得・設定
  • LineRenderer.positionCount」を使用した、記録されている線の座標の数の取得
  • LineRenderer.SetPosition()」を使用した、線の座標の記録
  • VRC_Pickup.UseText」を使用した、ゲームオブジェクト選択時の表示テキストの設定
  • BaseVRCVideoPlayer.Pause()」を使用した、動画の一時停止
  • BaseVRCVideoPlayer.Play()」を使用した、動画の再生
  • BaseVRCVideoPlayer.SetTime()」を使用した、動画の再生時間の設定
  • BaseVRCVideoPlayer.GetTime()」を使用した、動画の再生時間の取得
  • BaseVRCVideoPlayer.GetDuration()」を使用した、動画の長さ(時間)の取得
  • OnVideoEnd()」を使用した、動画の再生が終了した際の処理の記述
  • OnVideoStart()」を使用した、動画の再生が開始された際の処理の記述
  • BaseVRCVideoPlayer.Stop()」を使用した、動画の停止
  • BaseVRCVideoPlayer.PlayURL()」を使用した、URLを基にした動画の再生
  • VRCUrlInputFileld.GetUrl()」を使用した、入力されたURLの取得
  • DateTime.TotalSeconds」を使用した、時間の合計秒数の取得
  • Post Processing」を使用した、エフェクトの追加

工夫した点

  • デバッグする際、Unity エディターのコンソールウィンドウを使用できなかったため、常にローカルプレイヤーの頭に追従するHMD対応の疑似UIを作成した
  • ペンで小まめに LineRenderer コンポーネント付きゲームオブジェクトを生成して使用する事で、消しゴムを用いて細かな修正を可能にした
  • ワールドへの参加直後に複数の動画プレイヤーが存在すると正常に動作しなくなってしまうため、一定時間置きに各動画プレイヤーを活性化するようにした
  • LODを用いる事で、ワールドの見た目を維持したまま、ワールドの描画処理の負荷を軽減した
  • OnDeserialization()」を使用する事で、必要最低限の回数だけ同期するようにした
  • ガイド用NPCの上部の吹き出しを常にプレイヤーの頭の方向に向けさせる事で、吹き出しの内容を読み易くした
  • ドームテントに内側からしか開閉できないドアを設ける事で、プライベートな空間を作り出せるようにした

お問い合わせ

    タイトルとURLをコピーしました