見出し画像

はじめてUdonSharpを書いてみる

はじめに

私は普段JavaScriptやPythonなどを用いて簡単なプログラミングを趣味でする人間です。 VisualStudioなど基本的な開発環境は揃っているものとしています。 C#に関しては全く触ったことがないので、こちらに関しては手探りとなります。 今回の目標は、特定オブジェクトをUseすると、MirorをONOFFするギミックの作成とします。 部屋の景観を維持してみたいなと思ったので挑戦してみようと思います。

環境

使用OSはWindows10です。 UnityやVisualStudioは導入済みとします。
記事を公開した日は2023/12/14ですが、Unityのバージョンは2019のままです。

準備

任意の場所にCreate>U# Createをしてコードを書く準備をしておきます。
私はUdonというフォルダを作って、そちらに準備をしました。

実装

コード自体はたくさんお手本があります。大きく違いはありませんが、私が書いたコードを記述しておきます。コメントアウトの部分で、その部分でなにをしたいのかを書いています。(内容が間違っていたらご指摘ください!)


using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class PCIntaract : UdonSharpBehaviour
{

// ローカルで対象のオブジェクトのアクティブ、非アクティブを切り替える

    // 変数 PCMirrorを宣言。[SerializeField]をつけるとInspectorに表示されるようになる。
    // InspectorでONOFFしたいGameObjectを指定する。
    // 変数Mirrorはす私の環境だとすでに使用されてたので、PCをIntaractすると使える鏡なので、ここではPCMirorとする。
    [SerializeField] private GameObject PCMiror;
    
    // ワールドに入った時点の鏡をOFFにした状態にする。
    // void Start(){}で入った時点でやりたいことを書けるみたい。
    void Start(){
       PCMiror.SetActive(false);
    }

    // Interactしたときに{}の中身を行うよ、という意味。
    // {}の中身は、鏡のアクティブ状態をtrueだったらfalse,falseだったらtrueにするよってこと(なはず)
    public override void Interact()
{
PCMiror.SetActive(!PCMiror.activeSelf);
}
   
}

コードが書けたら

スイッチになるObjectにUdon Behaviourのコンポーネントを追加をし、Program Sourceに先程作ったものを入れましょう。Intaraction TextにはIntaractしたときのメッセージがかけます。Utilitiesのところには、ONOFFしたいObjectを入れるところがあるので、入れましょう~! スイッチになるObjectにはColliderが必要です。私はスイッチになるパソコンにMesh Colliderを入れました。(すごく初歩的ですが、Colliderきちんと入れないと動かないので注意してください~!)

最後に

既存の情報でできたので良かったです!
ちなみに作った部屋は以下の画像のような部屋です。

なんとまあ怪しい部屋なんでしょう!

左手にあるPCをUseすることで鏡のON/OFFをできるようにしてあります。この画像には写ってませんが、ベッド右手にある植木鉢をUseすることでベッドコライダーのON/OFFをできるようにもしています。
ちなみに、この部屋の間取りは私がBlenderでモデリングしたものです。ベッドなどはアセットを利用しています。また、bakeryでライトベイクすることにも挑戦しました。慣れないライティングでしたが部屋がとっても怪しくできて大満足です。
この部屋はプライベートワールドです。公開はしていません。もし、遊びに来てみたい人がいたら声をかけてくださいませ!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?