![見出し画像](https://assets.st-note.com/production/uploads/images/54483934/rectangle_large_type_2_b6ba708e14524ca839ba921c80618c69.png?width=1200)
Udon#テスト:武器のヒットを検知する当たり判定
※最終的にはプレイヤー座標に追従させるが、今回は検知のみ
1.当たり判定オブジェクトの用意
・Hierachy上でCapsuleを新規に追加し、適当なスケールに調整する
・Colliderの IsTriggerをFalseにする
・Udon Behaviourコンポーネントを追加、新規スクリプトをアタッチ
2.武器オブジェクトの用意
・VRC PickupとCollider(武器側の当たり判定とする部分)をつけたオブジェクトを用意
・ColliderのIs TriggerをTrueにする
3.武器レイヤーの追加
・オブジェクトのInspectorからLayerのプルダウンを開いてAdd Layer
・今回は赤、青の2チームそれぞれの判定として25,26番にレイヤーを追加
・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;
}
}