コンテンツにスキップ

オブジェクトをON/OFFする(ローカル)

スイッチオブジェクトをインタラクトして、対象のオブジェクトをON/OFFを切り替える方法。
ローカルで実行され、状態は同期されません。ミラーのスイッチなどに使用できます。

執筆時バージョン
VRCSDK: 2021.04.21.11.57
UdonSharp : v0.19.8

作例

ObjectSwitchというキューブをインタラクトでToggleObjectと名前を付けたキューブのアクティブ、非アクティブ状態を切り替える。

UdonGraph

使い方

  1. Udon BehaviorObjectSwitchにアタッチします。
  2. アタッチしたUdon BehaviorProgram Sourceに作成したUdonを指定します。
  3. Public VariablesにあるToggleObjectにToggleObjectをセットします。

解説

インタラクトされたときにアクティブ状態がONならOFFに、OFFならONにする処理です。 いわゆるNOT演算をします。UdonGraphでNOT演算を行う場合はBoolean.UnaryNegationというノードを使用します。

Get activeSelf ノードで、オブジェクトの有効(True)無効(False)状態が取れます。

インスペクタから設定できるようにToggleObjectのpublicにチェックを入れましょう。

UdonSharp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class LocalObjectToggle : UdonSharpBehaviour
{
    // 切り替え対象のオブジェクト public指定するとインスペクターから割り当てられます。
    public GameObject toggleObject;


    // このUdonが付いているオブジェクトをインタラクトしたら呼ばれる関数
    public override void Interact()
    {
        // toggleObjectのアクティブ状態を切り替える
        // !(bool値) と書くことで、True->False、False->Trueにする(NOT演算)ができます。
        toggleObject.SetActive(!toggleObject.activeSelf);
    }
}

使い方

基本的にはUdonGraphと設定の仕方は変わりません。

  1. Udon BehaviorObjectSwitchにアタッチします。
  2. アタッチしたUdon BehaviorProgram Sourceに作成したUdonSharpアセットを指定します。
  3. Public VariablesにあるToggleObjectにToggleObjectをセットします。

解説

C#では値の前に!を付けることでNOT演算ができます。それでtoggleObject.activeSelfで取得したオブジェクトの状態を反転した値を、toggleObject.SetActiveで設定します。