見出し画像

Hello world! 【#1 VR初心者がVRChatのworldを作る話】

はじめまして。小佐田と申します。
最近知り合いの紹介でVRChatを始めて、その美しいワールドに心を奪われるようになりました。(なお、まだVRゴーグルは持っていないのでDesktop版です)

このように進んでいると、あーこんな世界があればなー、なんて思ったりするものです。

ということで、自分でもWorldを作ってみたい! ゆくゆくはライブハウスのようなワールドを作ってイベントなんか開催してみたい!

ということで、UnityとC#の世界に足を踏み入れていくのでございます。
(日記、備忘録のつもりで書いていくので至らぬところあると思いますが、そこは温かく見守ってくださると幸いです)

今回の目標(Hello world!のワールド)

  • 何もない世界の真ん中に箱が表示されている

  • 箱のスイッチみたいなものを押すと「Hello world!」が表示される

やっぱり学習の一番最初には画面上に`Hello world!`って表示してみたいじゃないですか。画面上に文字を表示したり、ギミックを動かしたりするときにどのようにコードが組まれているか確認するために、そんなワールドを作ろうと思い立ちました。

環境の構築(UnityとVR用の拡張機能)

最低限必要なものは次の通りです。

  • Unity (2019.4.31f1)

  • VRChat SDK

  • VRChat Creator Companion

VRChat SDKはVRChat用のアバターやワールドを作成するためのUnityモジュールとなります。これをダウンロードします。
また、VRChat Creator Companion(以後VCC)からプロジェクトを作成することが推奨されているので、こちらもダウンロードしましょう(1敗)。

まず、プロジェクトを作成します

VCCからNew Projectを選択。Worlds U#を選択して諸々入力したのちにCreate Projectを押します。

Manage Packageが出てきますが、そのまま`Open Project`を押します。

上部メニューから VRChat SDK -> Show Control Panel -> Authenticationを開いてVRChatのアカウントにサインインします。

床を設置 & VRCWorld.prefabを設置

`Hierarchy`で右クリック -> 3D Object -> Planeを選択します。

`Project`の中の検索バーに`vrcworld`と入力してSearch欄を`all`にする。

見つかった`VRCWorld.prefab`を`Hierarchy`にドラッグ&ドロップする。

メインのオブジェクトを設置

`Hierarchy`で右クリック -> 3D Object -> Cubeを選択します。

`Inspector`の下部`Add Component`を押して`Udon Behaviourを追加。

Udon C# Program Assetが選択されていることを確認して`New Program`を押します。(作成できない場合はSceneの保存も試してみてください)

作成したcsファイルを開きます。まずはちゃんとオブジェクトが動くことを確認したいのでこのCube Objectを回転させてみましょう。

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

public class Cube : UdonSharpBehaviour
{
    void Start()
    {
        
    }

    void Update(){
        this.gameObject.transform.Rotate(Vector3.up, 90f * Time.deltaTime);
    }
}

回転するようになりました。

Hello Worldのオブジェクトを出現させるスイッチに変えてみる

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

public class Cube : UdonSharpBehaviour
{
    [SerializeField] private GameObject target;

    void Start()
    {
        
    }

    void Update(){
        this.gameObject.transform.Rotate(Vector3.up, 90f * Time.deltaTime);
    }

    public override void Interact(){
        target.SetActive(!target.activeSelf);
    }
}

`[SerializeField] private GameObject target;`を書くことで、Inspectorからターゲットを選択することができます。今回は`Hello World!`の文字のオブジェクトを指定してみました。

無事、Hello Worldが表示できましたね。

今後も、UnityでVRChatのworldを作る過程をこのようにnoteで書くかもしれないので、その際はまた読んでいただけると嬉しいですね。
それでは。

今回の内容のGithubレポジトリ

追記 U# Scriptが選択できなかった話

最初U# Scriptが作成できず、Udon C# Program Assetも選択できず詰みかけました。色々調べてみたところVCCからプロジェクトを作成することが推奨されているようでした。というか、おそらくVCC以外からだとうまくプロジェクトが作成できないようです。

兎にも角にも、VCCから作成する方がうまくいくようです。

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