API リファレンス
Spin Bottle Game のコントローラーは、独自の Udon スクリプトから呼び出せる公開メソッドを提供します。たとえば、同梱の SB_Bottle スクリプトの代わりに、カスタムのインタラクト対象からスピンをトリガーする場合などに使用できます。
Normal(SB_SpinBottleGame)と Lite(SBL_SpinBottleGame)は、それぞれ独立した無関係のクラスです。実際にワールドで使用している方を参照してください。以下で特に断りがない限り、メソッドの形はどちらも同じです。
同梱の SB_Bottle スクリプトは、プレイヤーがボトルにインタラクトするたびにすでに TriggerSpin() を呼び出しています(IsSpining() でガードされているため、スピンが二重にトリガーされることはありません)。具体的な型ではなく Udon の汎用的な変数/イベント API を通じてコントローラーとやり取りするため、同じスクリプトをどちらのバージョンでも変更なしで使用できます。Spin Bottle Game フィールドに、正しいコントローラーを割り当ててください。
メソッド
SpinBottle
スピンを開始します。オーナーシップを取得し、直前に着地した座席を新しい文章で埋め直し、誰が回したか、ボトルがどの座席に着地するかを記録し、スピンアニメーションを再生します。
public void SpinBottle(int playerId, int index)
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
playerId | int | スピンをトリガーしたプレイヤーの VRChat プレイヤー ID。 |
index | int | ボトルが着地する対象の座席/文章スロットのインデックス(0〜PLAYER_CAPACITY - 1)。 |
Normal バージョンでは、playerId がゲームに参加していない場合、このメソッドは何もしません(プレイヤー管理 を参照)。Lite バージョンにはこのチェックがなく、どのプレイヤー ID でも即座にスピンします。
TriggerSpin
SB_Bottle のように、汎用的な UdonSharpBehaviour の参照しか持たず SpinBottle を直接呼び出せない呼び出し元向けの、引数なしのエントリポイントです。ローカルプレイヤー のためにランダムな座席でスピンします。
public void TriggerSpin()
IsSpining
現在スピンが進行中かどうかを返します。
public bool IsSpining()
戻り値: ボトルが回転している間は true。それ以外は false。
FillGameSentences
ダウンロードした Pastebin のプールから、テーブルのすべての座席に新しいランダムな文章を埋めます。最初のダウンロードが成功した直後に自動で 1 回実行されます。テーブル全体を任意のタイミングで再抽選したい場合は、自分で再度呼び出してください。文章のプールがまだ読み込まれていない場合は何もしません。
public void FillGameSentences()
ResetGame
着地した文章と最後にスピンしたプレイヤーをクリアし、(Normal のみ)プレイヤーリストも空にします。
public void ResetGame()
ResetGame は SB_SpinBottleGame にのみ存在します。Lite バージョンにはリセットメソッドがなく、テーブルは各座席に最後に着地した文章を保持し続けます。