【VRChat】CyanTriggerについてとSDK3配布ギミックまとめ【サンプルあり】

VR

おはこんにちこんばんわ、うぐいすです。

最近はVRChat内でBARを開いていましてそちらにギミック入りの小物を追加しています。

以前はSDK2.0でギミックを作っていたので、今まではほけ様のTrigger2to3を使わせていただいてました。

ですが8月14日にCyanTriggerという新しいギミック組めるものが一般公開されたので折角だし新しいの使ってみようということで少し触ってみました。

触った際にサンプルを作ったのでそちらを配布します。
一番最後にありますのでよければ参考にしてください。

CyanTriggerについて

■CyanTrigger配布場所

CyanTrigger - cyanlaser - BOOTH
CyanTrigger is a new way to write logic for SDK3 worlds in VRChat, with an interface that resembles VRChat’s SDK2 VRC_Trigger. CyanTrigger has full access to al...
出典:https://cyanlaser.booth.pm/items/3194594



テキストエディタでプログラムを書いたり、ノードでグラフをつないだりせずに項目を選んで追加する方式でギミックを制作できるツールです。

SDK2.0時代のVRC_Triggerに仕組みは似ていますがUIは結構違います。

UIや操作感はほけ様のTrigger2to3の方が近いなと個人的には感じました。
Trigger2to3に関しては公式ドキュメントが日本語でわかりやすいです。
詳しくはこちらの公式のGitHubをご覧ください。

CyanTriggerはUDONのすべての機能が使えるそうなのでその点ではCyanTriggerの方が優れています。

後は変数が使えるのと、コメントが入れられること、コライダーやトリガーで判定するものがレイヤーを使わなくても特定のオブジェクトのみという組み方ができるのでその点が便利だなと感じました。

ただ公式ドキュメントやサンプルや色々すべてが英語です。
またブログを書いた現時点では新しいのであまり情報も転がってない気がします。

CyanTriggerの使い方、画面説明

ダウンロード、インストール

CyanTriggerを配布しているBOOTHでツールをダウンロードします。

■CyanTrigger配布場所

CyanTrigger - cyanlaser - BOOTH
CyanTrigger is a new way to write logic for SDK3 worlds in VRChat, with an interface that resembles VRChat’s SDK2 VRC_Trigger. CyanTrigger has full access to al...


寄付もありますので使ってみてよければ投げ銭もできます。

出典:https://cyanlaser.booth.pm/items/3194594

WorldのSDK3もダウンロードしておきましょう。

■SDK3のワールド ダウンロード場所

VRChat - Home
VRChat lets you create, publish, and explore virtual worlds with other people from around the world.
出典:https://vrchat.com/home/download

Unityの2019.4.29f1をダウンロードして、起動した後SDK3のunitypackageをダブルクリックしてインポートします。CyanTriggerも同様にunitypackageをダブルクリックしてインポートします。

windowsのパソコンだとダウンロードしたときにセキュリティでブロックされる可能性がある状態にunitypackageが自動的になっていたりします。
unitypackageを右クリックしてプロパティを押すと確認できるのでもし入っていたら一応許可しておいた方がいいかと思います。
 

使い方、画面説明

オブジェクトにCyanTriggerのコンポーネントを追加する

unityを起動したらヒエラルキーにオブジェクトを出します。
何でも良いですが今回はキューブを出しましょう。

キューブを出したらキューブを選択してインスペクターのところにあるAdd Componentをクリック。クリックした後にcyanと検索窓に入力してCyan Triggerをクリックします。

ヒエラルキーにあるオブジェクトをダブルクリックするとカメラがいい感じにオブジェクトの所に移動してくれます。結構便利なので「あれ?オブジェクトどこ行った?」って時に使ってみるといいかも。
ヒエラルキーのオブジェクトを選択した状態でCtrl+Shift+Fを押すと現在の自分が見ている位置にオブジェクトを移動してくれます。今現在見ている視点にメインカメラを動かしたいというときに便利かも。

初期画面の説明

クリックして追加するとCyanTriggerのscriptがインスペクターに追加されると思います。

Variables(変数)

変数を管理するところです。変数っていうのはなんか色々入れておける箱だと思ってください。
箱の中に数字をいれたり、オブジェクトをいれたり、好きなものをいれて保管しておき、後で取り出したり出来ます。同期関連にも変数を使います。

Sync Method(同期方法)

同期方法です。
VRChatの同期方法は2つあるようで連続同期手動同期があると書かれていました。

連続同期(Continuous)
よく変更されるデータの変数に使う。
定期的にデータを自動的に取得してすべてのクライアントに送信する処理をしている。
連続同期は重いらしい。
値が変更されてなくても送信されている。

手動同期(Manual Sync)
あまり変更されないデータに使う
変数を変更するには処理が必要で手動でやらなきゃだめ
ただ、めっちゃ高速で変数の同期には推奨されている

後、CyanTriggerが用意しているManual With Auto Requestっていうのがあって
こちらは変数を変更したときにVRChatに同期してくれる処理を自動でやってくれるものみたいです。初期値はこれになってたと思います。基本はこれでいいです。

CyanTriggerとVRC object syncを同じオブジェクトにつけて使う場合、同期方法をContinuousにしないとエラーが出て動きません。
(私は普通にcontinuousにしてましたが、もしかしたら子オブジェクトにobject syncつけて親にcyantriggerつければmanual syncで行けるかもしれないです。そっちの方が軽いかも…)
Add Event(イベント追加)

イベントを追加します。SDK2を使ってた方はIntractとかPickupUseDownとかでピンとくるかもしれません。

例えばですが「このオブジェクトを使った時に中の処理を発動させる」といったような開始条件のようなのを追加するところになります。その開始条件が色々沢山用意されているので選んで使います。

沢山あって選んで使ってって言われてもたぶん困ると思います。
なのでよく使うイベントを下にまとめときました。参考にどうぞ。
名前で検索かけたら出てくるので探すときは検索を使ってください。

個人的によく使うかなと思うイベント

■Intract
オブジェクトを使った時、何かしらのアクションを起こします。
使うとオブジェクトが出てくるだとか、使うと明かりがつくだとか、使うと声が大きくなるとか、まぁ使うと何か起こるオブジェクト全般に使います。

■OnPickupUseDown
オブジェクトを持った状態で使った時、何かしらのアクションを起こします。
使う場面としてはお酒を飲むギミックだったり、お酒を出すギミックだったり、持って食べれるアイテムとか作るのに使えます。あと持ってるアイテムを使うことで変形させたりとか、色を変えたりとか、いろんなことができますね。

■OnPlayerJoined
プレイヤーが入ってきた時に、何かしらのアクションを起こします。
これはワールドにだれか入ってきた時の通知音に使えます。
後はイベントの時の注意文を表示したりにも使えます。

■OnPlayerTriggerEnter
プレイヤーがTriggerに入ったときに、何かしらのアクションを起こします。
Triggerって何ですかって思う方もいるかと思います。

右の赤い矢印の部分にIs Triggerっていうのがあると思うんですが
これをいれておくとコライダーがプレイヤーが通り抜けられる判定用オブジェクトみたいになります。
この画像で説明すると左の緑の四角の範囲にプレイヤーが入ったときにアクションが起こることになります。

これがなんに使えるかといえば、入ったらテレポートするワープゾーンとか、入ったら扉が閉まるとかいう罠とか、通り抜けたら後ろから岩落ちてくる罠とか、思いつくのが罠ばっかですが色々できます。

コライダーバージョンもあります。コライダーバージョンだと上から落ちてきたオブジェクトにプレイヤーが当たったらテレポートさせるとかそんなのができると思います。ちょっとしたゲームが作れるかもしれません。

イベント追加後の画面説明

初期画面の説明が終わったのでイベントを追加して見ましょう。
Add Eventをクリックして何でもいいですが今回は上から2番目のIntractを追加します。

イベントを追加すると項目が増えます。

Other Setting(その他設定)

■Intraction Text
使うときに出てくる説明の文章を設定するところです。
Intractの時にしかないかも。

■Proximity
使うことのできる距離。この数値が大きくなると遠くからアクセスできるはずです。
ただ2.0時代は何かないと機能してなかった気がする。今はどうかわからないです。

Event head(イベントの上にある項目)

下記の画像の部分です。

■オレンジの部分
誰が処理を動かせるか設定するところになります。
Anyone 誰でも
Owner オーナーのみ
Master マスターのみ
User Allow List 許可リストを作ってその名前の人だけ操作できる
User Deny List 拒否リストを作ってその前の人だけ操作できない
Instance Owner インスタンスオーナーのみ

■赤の部分
local
イベントを起動した本人だけに処理を実行

Send to Owner
このオブジェクトのオーナーに処理を実行
(起動するのはオーナーじゃなくてもできる)

Send to All
インスタンス内にいる全員に処理を実行

Delay in Seconds(秒数分遅らせる)

記入した秒数分、処理を遅らせることができます。すぐ処理するのではなくちょっと遅延させたいときに使えます。

Action(起こる処理)

 下の画像の部分です。

実際の動作を追加するところになります。こちらもイベントと同じく大量にあるのでよく使いそうなものを後でまとめるのでよければ参考にしてください。

SDK2時代にギミック組んでた方はSDK2というところを見ればほぼ同じようなものがあるのではないかと思います。イベントと同じくアクションも検索で探せるので活用するといいかもしれません。

個人的によく使うかなと思うアクション

いずれも上記の画像赤色の部分のSDK2の中に入っているアクションです。
そちらで検索をかけたら見つかると思います。

■GameObject.SetActive
オブジェクトの表示、非表示ができます。アイテム出したりしまったりするときに使います。

赤色の部分に設定したオブジェクトが表示されたり非表示されたりします。
青色の部分で表示、非表示の設定ができます。

■GameObject.ToggleActive
こちらもオブジェクトの表示、非表示です。
ただトグル方式になっているので表示されているときに非表示に非表示の時に表示させることができます。

赤色の部分に設定したオブジェクトが表示、非表示されます。
こちらはトグルなので表示、非表示の設定はありません。

■VRCPlayerApi.TeleportTo
プレイヤーをテレポートさせるアクションです。
ワープゾーンとか触ったらワープするスイッチとか作るときに使います。

赤色の場所にヒエラルキーからテレポートしたい場所にあるオブジェクトを追加します。
基本はEmptyのオブジェクト作って設定しておくのがいいと思います。

■Transform.Teleport
オブジェクトをテレポートさせるアクションです。
ボタンをおしたら特定の位置にアイテムが行くギミックや
アイテム位置のリセットとかに使えます。

赤色の部分にテレポートさせたいオブジェクトをヒエラルキーからドラッグ&ドロップで入れます。
青色の部分にテレポートさせる場所のオブジェクトをいれます。
プレイヤーテレポートと同じでEmptyオブジェクトでいいと思います。

■AudioSource.Play
音を鳴らします。
プレイヤーが入ってきた通知音や、
ボタンを押したら音が鳴るギミックが組めます。

赤色の部分にオーディオソースをいれます。

■ParticleSystem.TogglePlay ParticleSystem.Play
パーティクルを再生します。
トグルの方は再生されてた場合停止して停止されてた場合再生します。
Playの方は普通に再生するだけです。
きらきらしたパーティクルを表示したいとかそういうときに使います。

赤色の部分に再生させたり、停止させたりしたい
パーティクルオブジェクトをヒエラルキーからドラッグ&ドロップします。

青の部分で状態を変化できます。チェックが入ってる時が再生でチェックが入ってないと気が停止状態です。

トグルに関しては下にあるwith childrenがなく、再生の時に停止、停止の時に再生される感じになります。

CyanTrigger公式WIKIや情報

■画面説明

CyanTrigger Interface · CyanLaser/CyanTrigger Wiki
CyanTrigger is a new compiler for Udon with focus on in-scene editing. The interface resembles the old SDK2 VRC Trigger interface, but has more functionality. C...

公式WIKIにすべて英語ですが…詳しく書いてあります。
グーグルクロームには右上に翻訳機能があるので自動翻訳して読めば何とか読めます。

わかる範囲でこのブログで日本語で説明していますが
そんなめっちゃ詳しくはないので、本当に正しい詳しい情報が
欲しい方はそちらを読むのがいいと思います。

出典:https://github.com/CyanLaser/CyanTrigger/wiki/CyanTrigger-Interface


■ギミックサンプル集

Guides · CyanLaser/CyanTrigger Wiki
CyanTrigger is a new compiler for Udon with focus on in-scene editing. The interface resembles the old SDK2 VRC Trigger interface, but has more functionality. C...

WIKIの方にもギミックサンプルがあります。こちらに同期ボタンの作り方もありました。
同期ボタンに関しては動画もあって、扉の開き方をやってましたね。

後は公式のunitypackageにサンプルシーンがついてます。
そちらもいろんなギミックがあって見ると勉強になるかと思います。
内容はすべて英語ですが…。
combatと普通のがあって、combatは戦闘系のギミックだそうです。

CyanKey

CyanKey - cyanlaser - BOOTH
CyanKey is an example escape room world using CyanTrigger. There are 8 rooms with different puzzles. Download the project for the world to learn about the diffe...

後はCyanKeyという脱出ゲームを公式の方がCyanTriggerで組んだ例があるみたいです。
中身見たら参考になるかもしれないですね。

配布されているSDK3ギミック

作るの難しいし面倒って方向けにおすすめの既存ギミックもまとめておきます。
どなたかの役に立ったら幸いです。

■[無料版あり] VRchat向け 基本的でシンプルなUDONギミック

[無料版あり] VRchat向け 基本的でシンプルなUDONギミック - 南緯74度 - BOOTH
UDONワールドを始めたいけど、何から手を付けていいのかわからない。 公式サンプルは分かりずらい。 基本的なところに、あまり時間をかけたくない。 そんなUDONビギナーのための、ごくシンプルなギミック詰め合わせです。 ・シンプルなトグルスイッチ ・プレイヤーが近づくと起動するスイッチ ・プレイヤーをテレポートさせる扉 ...

南緯74度のsarua様が配布している基本ギミック集です。これだけあれば十分そうな気がします。

■[VRChat]無段階高さ調整椅子 SDK3

[VRChat]無段階高さ調整椅子 SDK3 - KineL - BOOTH
無段階高さ調整椅子 For VRChat VRC_Starter Kit(SDK2)にて実装されていた高さ調整可能な椅子を、可能な限りSDK2時と同様な動作を行うよう調整したシステムです。 2021/6/17 v1.0.1 軽量化と設定の誤りを修正

KineLのnirila様が配布している
SDK2の時にあった調整椅子と同じギミックの椅子です。
自分のBARでありがたく使わせていただいてます。

■Lura’s Switch

Lura's Switch【SDK2/SDK3】 - 仮想狐のデザイン工房 - BOOTH
VRChat向けにデザインしたスイッチの3Dモデルと、簡易的な機能を内蔵したPrefab集です。SDK2/SDK3、両方に対応しています。 1マテリアルでまとまっているので軽量です。 ・Mirrorスイッチ ・AvatarDirectionalLightスイッチ(5段階) ・PostEffectスイッチ(5段階) ・照...

仮想狐のデザイン工房様が配布している色んなワールドで見かけるスイッチ。スイッチならこれを使ったらいいかもしれません。

■Qv Pen [VRChat][SDK2][SDK3]

Qv Pen [VRChat][SDK2][SDK3] - Package Shop @aivrc - BOOTH
VRChatのワールド用のトレイルペンセットです。 消しゴム機能も付いています。 ■Udon版QvPen v3.1でLate Joinerにも同期するようになりました。 (リプにも情報を載せているのでご確認ください) ・多く線があっても書かれた順にだんだん同期していきます(ペンの本数が多いと同期速度が遅くなります)。...

Package Shop @aivrcのureishi様が配布しているペン。こちらもいろんなワールドに置いてあります。私も使わせていただいてます。

■VRC Udon Starter Kit β Ver0.90

VRC Udon Starter Kit β Ver0.90 - Tesla design laboratory - BOOTH
VRChatのUdon用ワールド制作スターターキットβです。ワールド作成でまずほしいPrefabをいくつか同梱しています。 基本的にはMomomaさんの下記URLのギミックの一部をUdon化して直接編集したものです. (ミラー系4つ(1つは起動しない...),BGM系2つ,テレポータ1つ) ライセンスは以下に準します...

てすらのデザイン研究所のてすら博士様が配布しているワールドギミック集です。使い勝手良さそうなギミックが多そうです。

BOOTHでサンプル配布しています

BOOTHで自分が作ったサンプルギミックを置いてます。
良ければ参考にどうぞ。

簡単なワールドギミック集【VRC/SDK3】 - 茶屋はるどりのおみやげ屋 - BOOTH
CyanTriggerを使用して制作した簡単なワールドギミック集です。 参考や改変にどうぞお使いください。 とりあえず動くように作っているため ちまちま最適化をかけるかもしれません。 また気が向けばもうちょっとギミック増やします。 ■必須 VRCSDK3 World CyanTrigger ■入ってるギミック ・同...

ちょっと最適化が甘い部分が多いと思ったので、時間ができたらその辺りも考えて直したいなと思っています。また、今回配布したギミックについての解説とかも時間があれば書こうと考え中なのでのんびりお待ちください。

コメント

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