Unity OnTriggerEnter 碰撞检测与信息提示
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); // 信息提示框显示
}
}
代码说明:
- OnTriggerEnter(Collider other) 函数在物体进入触发器时调用。
- other 参数表示与该物体发生碰撞的另一个碰撞器。
- 代码首先检查碰撞对象的标签是否为 'cube',如果是,则不进行任何操作。
- 如果碰撞对象的标签不是 'cube',则将碰撞信息存储在
CollisionText.Instance.str_CollisionText变量中,并调用CollisionText.Instance.UpdateCollisionText()函数更新 UI 文本。 - 最后,将
collisionPanel对象设置为活动状态,以显示信息提示框。
注意:
- 要使用此代码,您需要创建一个名为
CollisionText的脚本,并在场景中创建一个带有Text组件的游戏对象,并将该游戏对象分配给CollisionText脚本的实例。 - 您还需要将要检测碰撞的对象的碰撞器组件设置为触发器。
希望这篇文章对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/eaBi 著作权归作者所有。请勿转载和采集!