[U3D] キャラクターがオブジェクト表示インターフェースをトリガーします(ゲーム開始/ゲーム終了/金貨の衝突など)

トリガーの主な使用法:

void OnTriggerEnter()

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag =="A") //如果它触发的物体的tag叫A
    {
        Debug.Log("ontriggerA");
    }	
    else if (other.gameObject.tag == "B")//如果它触发的物体的tag叫B
    {
        Debug.Log("ontriggerB");
    }
}

まずUnityを開きます

ここでは easytouch プラグインを使用してキャラクターの動きを制御していますが、他の方法も使用できます。


まずはウォール(壁)とボックスタグを設定します

   

ボックスと壁の両方がトリガーであることを選択する必要があります。ボックス コライダーがない場合は、手動で追加する必要があります

注: ここでのコライダーは直方体の箱型で提供されていますが、トリガーが他の形状の場合は修正が必要です。

キャラクターは Rigidbody と Collider を同時に持つ必要があります

次のコードをキャラクターにマウントし、デバッグを使用してトリガーできるかどうかをテストします。

void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "wall") //如果它触发的物体的tag叫wall
        {
            Debug.Log("TriggerWall");
        }
        else if (other.gameObject.tag == "box")//如果它触发的物体的tag叫box
        {
            Debug.Log("Triggerbox");
        }
    }

デバッグで見ると正常に動作している

この時点のコードはさまざまな目的に使用できます。

トリガーオブジェクト表示インターフェース:

キャラクターがボックスをトリガーしたときにこのインターフェイスを表示したい場合は、次のように記述できます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ontrigger : MonoBehaviour
{
    public GameObject UImsg;
    void Start()
    {
        UImsg.SetActive(false);              //不显示UImsg界面
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "wall") //如果它触发的物体的tag叫wall
        {
            Debug.Log("TriggerWall");
        }
        else if (other.gameObject.tag == "box")//如果它触发的物体的tag叫box
        {
            Debug.Log("Triggerbox");
            UImsg.SetActive(true);          //显示UImsg界面
        }
    }

}

終了

ご質問がございましたら、以下にメッセージを残してください。ありがとうございます。

作るのは簡単ではありません、ワンキー3リンクQwQを要求してください~~

 

おすすめ

転載: blog.csdn.net/xichi_12396/article/details/116655498