見出し画像

Udon#テスト:武器のヒットを検知する当たり判定

※最終的にはプレイヤー座標に追従させるが、今回は検知のみ

1.当たり判定オブジェクトの用意

 ・Hierachy上でCapsuleを新規に追加し、適当なスケールに調整する

 ・Colliderの IsTriggerをFalseにする

 ・Udon Behaviourコンポーネントを追加、新規スクリプトをアタッチ

画像1

2.武器オブジェクトの用意

 ・VRC PickupとCollider(武器側の当たり判定とする部分)をつけたオブジェクトを用意

 ・ColliderのIs TriggerをTrueにする

3.武器レイヤーの追加

 ・オブジェクトのInspectorからLayerのプルダウンを開いてAdd Layer

 ・今回は赤、青の2チームそれぞれの判定として25,26番にレイヤーを追加

 ・2で用意したオブジェクトのレイヤーを任意のチーム用レイヤーに変更

Layer追加

Layer追加2

4.当たり判定オブジェクトのスクリプト

public class PlayerCollider : UdonSharpBehaviour
{
   public Text ComText; //デバッグ用ログ表示のためのText(uGUI)

   public int TeamLayer; //自チームのレイヤー番号

   public int EnemyLayer; //敵チームのレイヤー番号

   //当たり判定用オブジェクトにIsTrigger = trueのオブジェクトが衝突した時
   public void OnTriggerEnter(Collider other)
   {
           //プレイヤー自体のColliderが衝突した場合、
           //引数のotherはnullとなっているのでnullチェックして回避
           if (other != null)
           {               
               //otherのレイヤーが敵チームレイヤー番号と一致したらHit判定
               if (other.gameObject.layer == EnemyLayer)
               {                   
                   LogWrite(string.Format("{0:HH:mm:ss} HIT!.\r\n", System.DateTime.Now));                  
               }
            }
   }


   public void LogWrite(string log)
   {
       ComText.text += log;
   }

}

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