XaiJu
messier
messier

fanbox


Vket6・自作ブースの解説など

 久々の雑記カテゴリだ~!

 今月14日に開催されたVket6も、既に開催期間の折り返しを迎えております。時間の流れって早い……。この一週間少しの間に、展示品をお迎えして下さった方や、ブースを撮影してくださった方のツイートをちょこちょこ見かけ、毎日幸福に過ごしております。何かを作る者として、素敵なものが数ある展示会の中で、自身の制作物に興味を持ち、良いリアクションを頂けるというのは非常にありがたいことです。まずは、それについての感謝を述べさせて下さい。ありがとうございます。

 そして、開催まではワールド内のスクリーンショットの投稿が禁止されていたのですが、開催を迎えてそのあたりが解禁されたので、今回展示しているブースの振り返りなどをやっていきたいと思います。

全景

 全景というわりにはヒキのスクショを残していなかった。ラグーナの題材がヨーロピアンな港町というほか、煉瓦や石畳という風に提示されていた為、メインの展示物であるNuibariたちのモチーフである手芸アイテムと、煉瓦造りのステージを合わせたような外観になっております。

 背後にあるハリネズミたちの看板は、初期構想段階では無かったのですが、壁際の配置が確定してから壁が寂しかったので追加しました。元々はワールドのイメージイラストにあったような、海と青空をバックにした設置エリアを想定していた為、擬似的に背景に青い色を差したかったのもあります。

 ディスク型のまち針をモデルにした観覧車(?)は、配色にかなり迷走しており、下見ワールド更新期間の間に数回変更されています。

 2021年7月9日撮影の最初期案。実は最初は配置が異なりましたが、のちのち変更と同時に、現在ワールドに反映された箇所で確定ということでアナウンスが入り、現在の位置になりました。

 観覧車はあくまでもまち針ケースモチーフを意識しようということで、最初期はシールをイメージした花柄のメッシュ箇所以外を、全てプラスチック風の白色にしていたのですが、さすがにそれだと地味すぎるということで、中央だけアクセントとして赤色に設定しました。

 また、下見ワールドが公開されるまで、ワールド自体の「リアル度」がどのくらいになるか読めなかった為、この時点では植え込みや煉瓦ブロックのテクスチャもあまり細かくなく、トゥーン寄りで設定しています。

 数日動いて7月13日のスクショです。白色部分をクリアパーツに差し替えました。

 スペースの位置は現在のものになりましたが、ポスターはまだ無いです。左側の旗も後付けで結構頑張って作ったんですが、ポスター設置時に泣く泣く撤去する羽目になります。

 このクリアパーツの外観は結構寿命が長く、Nuibariの試着用データのサムネイルに使っている画像も、最終版ではなくこのタイプの観覧車が映り込んでいます。しかし、背景と馴染みすぎて、見たときのインパクトが弱まるのでは? と思った為、最終的には不透明に戻され、初期の白から黄色に塗り替えたもので最終決定しました。

お客さんが触れるギミック

 反省点でもあります。2点ありました。

 ブースに散らしている飾りの針のうち、Nuibariから流用した2本の針は触れるようになっており、青いピンクッションに刺さっている縫い針は糸のトレイルがくっついた持ち歩き可能アイテム、手前の生け垣に刺さっている金属部分が金色のまち針は、主役展示物のNuibariを消去して(!)お客さんが玉乗りしてスクショを撮れるトグル式フォトスポットになっていました。ちなみにNuibari消去は、複数の人で遊びに来た場合にお客さんとマネキンがめり込むことを避けたかった為、同期する仕様になっています。

 ただ、どちらもほとんど気づかれていなかった気配がありますね。操作用のコライダーを針のサイズに合わせて細長くしていたので、VRだと判定が非常に出づらいことに開場後気づきました。普段のデバッグは主にデスクトップでやっているので……。

 デスクトップ版はアバターの体が自由に動かせないなど、制約も多いイメージなのですが、画面中央のポインタに合わせたものを精確に操作したり調べたりできる為、判定をスッと掴むという点ではVRより優れていると思います。アバターのEXメニューもデスクトップの方がずっと操作しやすく、VRで操作して初めて(これはもっと減らさないとダメだな……)と思いました。

 ブースについてはまた何か展示系イベントに出す際、注意したいと思います。アバターも恐らく、次の更新時にまとめて操作方法を再度設計しなおす予定です。ひとまず公開中のアバターについては、Physics Boneが実装されるアバターダイナミックアップデートが来たら改めて更新をかけていきたいと思っておりますので、もうしばらくお待ちください……。

Udon解説(開催期間限定情報)

 ここからはお客さんが触れないギミックの解説です。今年C#を触り始めた初心者ですので、そんな複雑なことはしていないのですが、同じくらいのレベルの方が同じことをやりたい! と思ったときの参考にできれば幸いです。


 一つ目は、イベント期間中と、それ以外で表示を変更するギミックについてです。お品書き記事でも書きましたが、今回のブースはそういう仕掛けを入れており、有償アバターのNuibariのペデスタル判定と、値段を記載したセール告知は、開催期間が終わると見えなくなったり通常価格になるように設定しています。アーカイブという点では当時そのままの方が良いのかもしれませんが、時間が経過してから来たイベント開場で、ペデスタルの判定が残っているのに押しても変身できない瞬間、ちょっとガッカリして個人的にイヤなんですよね。


 使っているトリガーはvoid Startのみです。最初の時点で書き換えちゃって、あとは触りませんからね。

 まずは時間を扱えるようにする為、using System;を記入します。うちはImageも操作しているので、using UnityEngine.UI;も記入しています

 そして、イベントの開催日の0:00と、開催終了日の次の日の0:00を変数に設定します。種類はDateTimeです。単に「2021年8月14日」として設定してしまうと、それぞれの国のローカル時間になってしまう為、今回私は、開始の日時を「new DateTime(2021, 8, 13, 15, 0, 0, DateTimeKind.Utc)」終了日時を「new DateTime(2021, 8, 28, 15, 0, 0, DateTimeKind.Utc)」と設定しました。この二つの時間のおしりについている「DateTimeKind.Utc」は、「ローカル時間じゃなくて協定世界時を使ってね」という意味で、ここに日本の時差分である9時間を加えると、それぞれが「日本時間の2021年8月14日」と「日本時間の2021年8月29日」ぴったりになります。あとは、ワールドにJoinした際の時刻を改めて取り、それが「開始期間より後かつ終了期間より前」になっているときと、そうでないときで処理を分岐させれば、恐らく色々な箇所に応用できるはずです。

 また今回は実装しませんでしたが、入場時にローカル時間とUtc+9時間を取得し、それらがイコールなら初期の言語を日本語、それ以外なら英語とする案もありました。実際には海外に住んでいる日本人の方もいらっしゃいますし、日本語のイベントを見に来たい海外の方もいらっしゃると思いましたので、そこまで仕込むのはお節介かな~と考え、かなり初期の段階で廃止しています。

Udon解説(入場アニメーション)

 これは視覚的にも分かりやすいと思います。ブースに近づいた際、特定のNPCが手を振ったりして反応してくれるギミックです。こちらも他の人が起こした動作を見られるようにしたかった為、該当NPCには同期設定がついています。

 利用しているのがVket専用トリガーのvoid VketOnBoothEnter、void VketOnBoothExit、void VketUpdateの3種なんですが、それぞれ結構クセも強く、下見期間中にバグもあったので、調整は結構苦労しました。普通にご自身のワールドで似た挙動をさせる分にはそこまで苦労はないと思います。

 まず誰かが入場するとVketOnBoothEnterが反応してアニメが切り替わり、ブース内に1ミリ秒滞在するか、退場するかをするとVketUpdateまたはVketOnBoothExitによってAnimatorの状態を変える変数がリセットされIdle状態に戻り、他の人が入場したときにも再度同じアニメが再生される仕組みです。


 最も混乱したのが、VketOnBoothEnterはブースに入った瞬間のみイベントを1回叩いてくれるものだと思ったのですが、今回の仕様では、ブース滞在中は叩き続けるようです。なので、そのままでは入った瞬間に一回だけ再生して欲しい入場アニメーションが、ずっとループ再生されてしまいます。

 ここの処理は、boolを2種類作って解消しました。「ブースに入場したか」と「ウェルカムアニメーションを再生したか」です。ブース入場判定がfalseの場合、アニメーションを動かす為の準備が行われます。またその処理の中でboolをtrueに切り替え、二度目は実行されないようにします。アニメーション判定はVketUpdate内で利用され、未再生の場合には一度ウェルカムアニーションを再生→Idle状態に戻すという処理をかけたあと、入場判定と同じくbool操作をして二度目の実行を禁止しています。

 そして、VketOnBoothExitを経るとすべての情報がブース未入場の状態に初期化され、一度ブースに入って出た人が改めて入り直した場合でも、ウェルカムアニメーションが再生される仕組みです。

 本当はIdle→入場アニメ→Idle→退場アニメ→Idleという感じで退場時にもリアクションをさせたかったのですが、VketUpdateはブース内にいるときしか反応しないので、退場アニメは諦めました。一度再生してIdleに戻す……という処理を投げればできたかもしれませんが、Idle状態の中で一回だけリアクションしてくれるのがやりたかったので、そこを変更するならやらないです。(過激派)

Vket6・自作ブースの解説など Vket6・自作ブースの解説など Vket6・自作ブースの解説など Vket6・自作ブースの解説など Vket6・自作ブースの解説など Vket6・自作ブースの解説など

More Creators