using UnityEngine;

public class OnCollision : MonoBehaviour
{
    public GameObject collisionPanel; // 信息提示框

    void Start()
    {
        Rigidbody rb = GetComponent<Rigidbody>();

        // 将刚体的运动类型设置为静态
        rb.isKinematic = true;

        // 将碰撞器设置为触发器
        Collider collider = GetComponent<Collider>();
        collider.isTrigger = true;
    }

    /// <summary>
    /// 物体发生碰撞
    /// </summary>
    private void OnTriggerEnter(Collider other)
    {
        //Debug.Log(gameObject.transform.name + '与' + collision.transform.name + '发生碰撞 ');

        if (other.tag == 'cube')
        {
            return;
        }
        else
        {
            CollisionText.Instance.str_CollisionText = gameObject.transform.name + '与' + other.gameObject.name + '发生碰撞!'; // 将物体碰撞的信息导入碰撞信息文本
        }

        CollisionText.Instance.UpdateCollisionText(); // 将物体碰撞的信息导入碰撞信息文本 UI

        collisionPanel.SetActive(true); // 信息提示框显示
    }
}

代码说明:

  1. OnTriggerEnter(Collider other) 函数在物体进入触发器时调用。
  2. other 参数表示与该物体发生碰撞的另一个碰撞器。
  3. 代码首先检查碰撞对象的标签是否为 'cube',如果是,则不进行任何操作。
  4. 如果碰撞对象的标签不是 'cube',则将碰撞信息存储在 CollisionText.Instance.str_CollisionText 变量中,并调用 CollisionText.Instance.UpdateCollisionText() 函数更新 UI 文本。
  5. 最后,将 collisionPanel 对象设置为活动状态,以显示信息提示框。

注意:

  • 要使用此代码,您需要创建一个名为 CollisionText 的脚本,并在场景中创建一个带有 Text 组件的游戏对象,并将该游戏对象分配给 CollisionText 脚本的实例。
  • 您还需要将要检测碰撞的对象的碰撞器组件设置为触发器。

希望这篇文章对您有所帮助!

Unity OnTriggerEnter 碰撞检测与信息提示

原文地址: https://www.cveoy.top/t/topic/eaBi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录