2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

オブジェクトに触れると音が鳴るギミックを作る|UdonSharpを書いてみよう(1)

Last updated at Posted at 2021-12-01

#目次
1.UdonSharpを書くための準備をする
2.UdonSharpを書く
3.ボタンにするゲームオブジェクトを作る
4.ワールドを完成させる
5.動作確認
6.次回

#1.UdonSharpを書くための準備をする
##Unityで新しくプロジェクトを立ち上げる
プロジェクト.png
テンプレートは3D、
プロジェクト名はUdonなどわかりやすい名前にしておきましょう
右下の作成でプロジェクトを作成します

##VRCSDKをインポートする
プロジェクトが開いたら、VRCSDKをインポートします
VRCSDKは自分に合ったバージョンの物をインポートしましょう
__SDK3-Worlds__をもっていない場合は、VRChat Homeから、ダウンロードできます
インポートは、VRCSDKをUnityのAssetsへ、ドラッグアンドドロップします
image.png
インポートを押します
インポートが終わると、フォルダが追加されると思います

##最新のUdonSharpをダウンロードする
UdonSharpは、MerlinVRさんがGitHubで公開しているものを使います
最新のUdonSharpをダウンロード
ダウンロードができると、UdonSharpのUnityPackageを、Unityにインポートします
image.png
インポートを押します
インポートが終わると、フォルダが追加されると思います

##UdonSharpを作るフォルダを作る
Assetsにファイルが散らばるのも嫌なので・・・
今回はAudioPalyなどの名前で、フォルダを作ります
image.png
作りました

##U#Scriptを作る
AudioPlayにU#Scriptを作ります
Create/VRChat/Udon/Udon C# Program Asset
で、ProgramAssetを作成します
image.png
名前は、AudioPlayとかにしておきます
image.png
これでProgramAssetはできました
次に、ProgramAssetを開いて、Scriptを作成していきます
InspectorからCreate Scriptを押します
image.png
保存選択画面が出てくると思いますが、名前は最初から入力されているので、そのまま保存します
image.png
image.png
これでU#Scriptが完成しました

#2.UdonSharpを書く
AudioPlay.csを開きます
##変数を宣言する
オーディオを扱うために、変数を宣言します
__privateな、AudioSource型の変数__を、定義します
名前は、わかりやすい名前にしておきます
今回私は、audioSourceで宣言しました

private AudioSource audioSource;

これで変数はできました

##スタート時にオーディオソースを取得する
オーディオソースを取得するため、最初からあるStartメソッドに、コードを書いていきます
Scriptを入れたゲームオブジェクトに入っているオーディオソースを取得したいので、
GetComponentを使って、AudioSourceを取得します
次に、取得したオーディオソースは、audioSource変数に代入します

void Start()
{
	audioSource = GetComponent<AudioSource>();
}

これでオーディオソースの取得ができました

##ゲームオブジェクトをクリックできるようにする
ゲームオブジェクトをクリックしたときに、イベントを発生させるメソッドは二つあり、
MonoBehaviourに入っている__OnMouseDown__と、
UdonSharpBehaviourに入っている__Interact__があります
また、InteractはVRChat用に作られています(詳しいことはしらない、勉強不足)
今回はInteractを使います
publicな、戻り値無しの上書き可能メソッドとして、定義します

public override void Interact()
{
		
}

これで、クリック判定ができるようになりました

##クリックされた時の処理を書く
クリックされた時の処理は、上記で取得したオーディオを再生したいので、
AudioSource __.Play__を使って再生します
(Interactメソッドの中に書きます)

audioSource.Play();

これで、クリックしたときに再生されるようになりました
スクリプトを保存して、Unityに戻りましょう

#3.ボタンにするゲームオブジェクトを作る
##ゲームオブジェクトにスクリプトを入れる
まずは、ゲームオブジェクトを作ります
名前はAudioPlayButtonにしておきました
image.png
(コライダー判定が邪魔な人は、Box Collider の IsTriggerをオンにしましょう)
この中に、スクリプトを入れていきます
ゲームオブジェクトに、AudioPlayスクリプトを、ドラッグアンドドロップします
ドラッグアンドドロップをすると、Convert to UdonBehaviourを押します
image.png
これで、Scriptが使えるようになりました
Useするときの文字を変えたい場合は、Interaction Textを書き換えることで、変更できます
image.png

##再生するオーディオソースを入れる
オーディオソースは、効果音ラボさんから、いただきました
今回使用した音源は、ボタン・システム音の、[決定、ボタン押下3]を利用しました
ダウンロードがおわったら、オーディオを、ドラッグアンドドロップでインポートします
image.png
オーディオが入ったら、このオーディオを、ゲームオブジェクトにドラッグアンドドロップします
これで、オーディオソースがはいったので、設定していきます
Play on Awakeを外します
Priorityを0にします
Volumeを0.5にします

image.png
これで設定ができました

#4.ワールドを完成させる
このままでは、地面も何もないので実行できません
地面とスポーンするためのVRCWorldを追加していきます
まずは、地面を作ります
Terrainやキューブなどで、地面を作ります
image.png
image.png
地面が完成しました
次に、VRCWorldを追加して、リスポーン位置を設定します
Assets/VRChat Examples/Prefabs の中にあります
image.png
これを、ドラッグアンドドロップで、Hierarchyに追加します
image.png
image.png
追加できました
これで、ワールドとして使えるようになりました

#5.動作確認
VRChat SDKから、Build & Testを実行します

テスト動画

動いていれば成功です
動いてない場合は、もう一度、スクリプトを確認してみてください
お疲れさまでした

#6.次回
また何か作ります

UdonSharpを書いてみよう(2)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?