Unity3D基础15:触发器

 

前文:https://blog.csdn.net/Jaihk662/article/details/86760441(碰撞检测)

PS:注释和讲解部分在代码中

一、触发器

触发事件:当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件

触发用途:不与目标物体发生直接的碰撞,而是只要进入目标物体的“触发范围”就能执行某些特定操作

打开触发器:选中碰撞体组件面板上的“Is Trigger”选项,就会转为触发器,转为触发器后,移动的刚体会穿透碰撞体

触发器监测方法:

  • OnTriggerEnter(Collider):进入触发范围内时调用,只会调用该方法一次
  • OnTriggerExit(Collider):离开触发范围内时调用,只会调用该方法一次
  • OnTriggerStay(Collider):在触发范围内时,会持续调用该方法

Collider参数:一个类,用于传递触发信息对象

  • Collider.gameObject属性:当前物体触发的物体的引用
  • gameObject.name属性:当前物体的名字
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Trig : MonoBehaviour
{
    void Start()
    {
        Debug.Log("StartforTrig");
    }
    void Update()
    {

    }
    void OnTriggerEnter(Collider coll)
    {
        Debug.Log("触发开始:" + coll.gameObject.name);
    }
    void OnTriggerStay(Collider coll)
    {
        Debug.Log("触发中:" + coll.gameObject.name);
    }
    void OnTriggerExit(Collider coll)
    {
        Debug.Log("触发结束:" + coll.gameObject.name);
    }
}

效果如下:

 

二、触发器与碰撞体的交互

注意触发器只是碰撞体的一个属性

假设存在两个物体A和B,要实现碰撞检测:

  • A和B一定要有一个是刚体,运动的那个必须是刚体
  • 只要有一个是触发器,那么就无法触发碰撞体,也就是说必须两个都是碰撞体
  • 可以给A和B各挂一个脚本实现相互检测碰撞

假设存在两个物体A和B,要实现触发检测:

  • 运动的那个必须是刚体
  • 只要有一个是触发器,就可以实现触发检测
  • 可以给A和B各挂一个脚本实现相互检测触发

 

 

 

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值