これは、 VRChat Advent Calendar 2019 の19日目の記事です。
VRC_TriggerのActions一覧
VRChatのワールド内にボタンとかを設置したい場合、 VRC_Trigger
というものが必要らしく、先週くらいから触り始めました。
トリガーで何が起こせるの?
っていうのをググってみると、少し情報が古かったりで、意外と一覧でまとまっているページが見当たりませんでしたので、作ることにしました。
Actions一覧
- Unity: 2017.4.28f1
- VRChat SDK: 2019.09.18.12.05
上記の環境で Actions
を見てみると、以下のようになっていました!
項目がいっぱいありますね!この1つ1つが Action
と呼ばれるものです!
それぞれの項目の説明は、以下の公式説明ドキュメントに記載があるのですが、一部説明がないものもありました。
VRChat / v2019.3.2 / Guides / Actions
説明がないものは、検索や質問したりして集めた情報を記載しようと思います。
アルファベット順です。
ActivateCustomTrigger
カスタムトリガーを発火します。
公式説明:https://docs.vrchat.com/docs/activatecustomtrigger
たとえば、
- ボタンAを押したら扉が開く。
- ボタンBを押しても扉は開く。
みたいなシーンを実現したいとします。
以下のように設定すれば一応実現できます。
- ボタンAのActionに、扉が開くアニメーションを設定する。
- ボタンBのActionに、扉が開くアニメーションを設定する。
しかし、カスタムトリガーを利用すれば、以下のように、共通化できます。
- カスタムトリガーを作成し、そのActionに、扉が開くアニメーションを設定する。
- ボタンAのActionに、カスタムトリガーを設定する。
- ボタンBのActionに、カスタムトリガーを設定する。
これはいわゆる UIとロジックの分離
というやつです。(プログラミング界隈でよく聞くやつ)
扉を開ける
というUIと、 カスタムトリガーを発火する
というロジックを分離することによって、今後、改良がしやすくなるという利点があります。
たとえば、ボタンC、D、Eみたいのが増えたとしても、それぞれのActionにカスタムトリガーを設定するだけで済みます。
さらに、 扉が開いたら風のエフェクトを発生させる
みたいな仕様変更があったら、ボタンA~Eすべてを変更するのは大変です!
カスタムトリガーがあれば、カスタムトリガーののActionだけを変更すればよいから楽ですよね!
AddAngularVelocity
公式に説明がないため、根拠はありませんが、おそらく、 Rigidbody
に角速度を与えるものだと思います。
AddDamage
GameObject
にダメージを与えます。
公式説明:https://docs.vrchat.com/docs/adddamage
AddForce
Rigidbody
に力を加えます。
公式説明:https://docs.vrchat.com/docs/vrchat-201821
AddHealth
GameObject
にヘルスを与えます。
公式説明:https://docs.vrchat.com/docs/addhealth
おそらく、ダメージで減った体力が回復するのだと思います。
AddVelocity
公式に説明がないため、根拠はありませんが、おそらく、 Rigidbody
に速度を与えるものだと思います。
AnimationBool
指定した Animator
の bool
変数の値を変更します。
公式説明:https://docs.vrchat.com/docs/animationbool
AnimationFloat
指定した Animator
の float
変数の値を変更します。
公式説明:https://docs.vrchat.com/docs/animationfloat
AnimationInt
公式に説明がないため、根拠はありませんが、おそらく、指定した Animator
の int
変数の値を変更するものだと思います。
AnimationIntAdd
指定した Animator
の int
変数の値に、指定した数値を加算します。
公式説明:https://docs.vrchat.com/docs/vrchat-201811
AnimationIntDivide
指定した Animator
の int
変数の値を、指定した数値で除算します。
公式説明:https://docs.vrchat.com/docs/vrchat-201811
AnimationIntMultiply
指定した Animator
の int
変数の値に、指定した数値を乗算します。
公式説明:https://docs.vrchat.com/docs/vrchat-201811
AnimationIntSubtract
指定した Animator
の int
変数の値から、指定した数値を減算します。
公式説明:https://docs.vrchat.com/docs/vrchat-201811
AnimationTrigger
Animatorのトリガーパラメーターを発火します。
公式説明:https://docs.vrchat.com/docs/animationtrigger
AudioTrigger
指定した Audio Source
の Audio Clip
を再生します。
公式説明:https://docs.vrchat.com/docs/audiotrigger
DestroyObject
GameObject
を破棄します。
公式説明:https://docs.vrchat.com/docs/destroyobject
PlayAnimation
旧 Animation
コンポーネントのアニメーションを再生します。
公式説明:https://docs.vrchat.com/docs/playanimation
SendRPC
スクリプトから関数を発火します。
Advanced Mode
の時のみ利用できます。
公式説明:https://docs.vrchat.com/docs/sendrpc
SetAngularVelocity
指定した値に、 Rigidbody
の角速度を変更します。
公式説明:https://docs.vrchat.com/docs/vrchat-201821
SetComponentActive
Component
のアクティブ状態を変更します。
公式説明:https://docs.vrchat.com/docs/setcomponentactive
SetGameObjectActive
GameObject
のアクティブ状態を切り替えます。
公式説明:https://docs.vrchat.com/docs/setgameobjectactive
例えば、ボタンを押したらパーティクルライブの Timeline
を開始するみたいなことができます。
Timeline
を設定した GameObject
を用意して、この SetGameObjectActive
でその GameObject
をアクティブにするという流れです。(パーティクルライブのDiscordで教えてもらいました。)
SetLayer
指定したレイヤーに、選択した GameObject
のレイヤーを変更します。
公式説明:https://docs.vrchat.com/docs/setlayer
SetMaterial
指定したマテリアルに、選択した GameObject
のマテリアルを変更します。
公式説明:https://docs.vrchat.com/docs/setmaterial
SetParticlePlaying
パーティクルシステムの放出のアクティブ状態を切り替えます。
公式説明:https://docs.vrchat.com/docs/setparticleplaying
SetUIText
指定した値に、 UIText
コンポーネントのテキストを変更します。
公式説明:https://docs.vrchat.com/docs/vrchat-201821
SetVelocity
指定した値に、 Rigidbody
の速度を変更します。
公式説明:https://docs.vrchat.com/docs/vrchat-201821
SetWebPanelURI
指定したURIをウェブパネルにセットします。
現在無効化されているようです。
公式説明:https://docs.vrchat.com/docs/setwebpaneluri
SetWebPanelVolume
ウェブパネルの音量を調整します。
現在無効化されているようです。
公式説明:https://docs.vrchat.com/docs/setwebpanelvolume
SpawnObject
指定した Prefab
をスポーンさせます。
公式説明:https://docs.vrchat.com/docs/spawnobject
SetGameObjectActive
との違いは、新たな GameObject
を生成するかどうかです。
Unity C#でいう Instantiate
、Playmakerでいう Create Object
に相当するものかなぁと思います。
TeleportPlayer
設定した場所にプレイヤーを移動させます。
公式説明:https://docs.vrchat.com/docs/teleportplayer
さいごに
本記事作成にあたり、以下の記事を参考にさせていただきました。ありがとうございました。
- VRChat / v2019.3.2 / Guides / Actions
- VRChat / v2019.3.2 / Guides / VRChat 2018.1.1
- VRChat Document 日本語訳 Wiki / VRC_Trigger / アクション
- [VRChat]初学者向けAnimatorの使い方
- Programming in VRChat / Custom Trigger
これは、 VRChat Advent Calendar 2019 の19日目の記事でした。
明日は @rakurai5 さんによる Amplify Shader Editorを用いてメッシュを雪で覆うシェーダーを作る です!