【VRChat】銃で遊べるようにしよう 1
銃で遊べるようにしよう
開発記録として何か残したいので、ブログにします。
VRChatの開発に関しては調べても情報がかなり少ない印象なので、情報量を充実させる目的も少しあります。
ブログに書いた内容に関して聞きたいことがあったら、@foxqoo3969までお願いします。
対面は怖いので、いきなりVRChat内で聞かないでください。
今回は音が出るまでを記録します。
銃のインポート
G26という銃のモデルを使わせてもらうことにしました。無料、ありがとう。
早速ヒエラルキーに配置。
持てるようにする
持てるようにするには、VRC_Pickupコンポーネントを付与する必要がある。
VRC_Pickupを使うには、ColliderとRigidbodyコンポーネントも必要らしいのでこれらも付与する。
参考:vrcprog.hatenablog.jp
Colliderは箱型にして、銃の大きさくらいになるように調整した。
Exact Gunを銃自身に(画像だと修正後なので違う、後述)、
OrientationをGunに、
AutoHoldをYesにする。
早速持ってみる
VRC PickupのOrientationでGunを選択すると、持った時にz軸が上になるようになるのだが(さっきの参考サイトに書いてある)、インポートした状態の銃のz軸は左側を向いていたようで、手に持ったら横向きになってしまった。
解決するために、銃の子としてEmptyを配置し、z軸を上向き、x軸を奥にする。
VRC PickupのOrientationをこのEmptyにした。(Gripにリネームしている)
持ってみる
銃のサイズは後で大きくする。
あとマガジンが表示されていてグリップが大きく見えるので、マガジンは後で非表示にすると思う。
音を出す
持った状態で使用したら音が出るようにする。
音は各自適当なものを探してくる。
ここで参考にしたのはこのサイト:www.sejuku.net
Audio Sourceコンポーネントを銃に付与する。
AudioClipに用意した銃声を入れる。
次はコードを書く
using UdonSharp; using UnityEngine; using UnityEngine.UI; using VRC.SDKBase; using VRC.Udon; using VRC.Udon.Common.Interfaces; public class g26 : UdonSharpBehaviour { public AudioClip ac_sound_gunshot; AudioSource as_sound_gunshot; void Start() { as_sound_gunshot = GetComponent<AudioSource>(); } public override void OnPickupUseUp(){ as_sound_gunshot.PlayOneShot(ac_sound_gunshot); } }
最初、「これOnPickupUseUp()なんかねえよって怒られるんじゃ」って思いながらビルドテストしたらUnityが落ちた。
別でインポートしてたスナイパーライフルのスクリプトにあったusingをそのままコピペしてみたらビルドテスト通るようになった。原因は調べてないけどまぁいいか...
銃にUdon Behaviourコンポーネントを付与する。
撃ってみる。
— パーカー/FoxQoo (@foxqoo3969) 2022年12月22日
動画の最後で、投げ捨てた銃が床を貫通した原因はわかんないっす。
とりあえず音が出せるとこまで行けたので満足した。