持ち運べるCubeのサンプルについて解説
Udonスクリプト作成
サンプルのPickupAndUseをU#に書き直し
Udon Graph
![](https://i0.wp.com/toruxu.vr.nakashima-toshiki.xyz/wp-content/uploads/2021/07/image-18.png?resize=755%2C431&ssl=1)
U#
public class PickupAndUseBySharp : UdonSharpBehaviour
{
public Material targetMaterial;
void Start()
{
targetMaterial = GetComponent<MeshRenderer>().material;
}
public override void OnPickupUseDown()
{
targetMaterial.color = Color.green;
}
public override void OnPickupUseUp()
{
targetMaterial.color = Color.grey;
}
}
シーンの作成
シーンにCubeを配置して、 下記3つのコンポーネントを追加します。
VRC Pickup・・・・掴めるようにする
Rigidbody・・・・・物理演算を有効にする
VRC Object Sync・・オブジェクトの位置を他のユーザーに同期させる
掴めるオブジェクトには2種類あり、
ボタン長押しで掴む状態を維持するオブジェクトと
ボタンを一度押すと掴み続けるオブジェクト
が存在し、掴んだオブジェクトを使うには後者である必要があるので、VRC PickupのAutoHoldをYesにして掴む状態を維持する設定にします。
掴んだモノを離すと空中で浮かぶようにしたければ、RegidbodyコンポーネントのUseGravityをオフにします。
![](https://i0.wp.com/toruxu.vr.nakashima-toshiki.xyz/wp-content/uploads/2021/07/image-19.png?resize=404%2C745&ssl=1)
参考文献
重力の作用をアリ/ナシにするや摩擦の概念などを公式のRigidbodyを参考にして下さい。
VRC_Pickupコンポーネントの細かい設定はこちらの公式リファレンスを参考にするのが良さそうですが、英語でグーグルに翻訳させても分かりづらいので下記サイトが一番参考になりました。
拾い上げられるオブジェクトを作成する