相关文章推荐
英勇无比的跑步鞋  ·  Spring Boot ...·  1 年前    · 
贪玩的皮带  ·  chrome禁用js函数-掘金·  1 年前    · 
豪气的荒野  ·  mysql--CASE WHEN ...·  1 年前    · 

一、触发器

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

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

打开触发器:选中碰撞体组件面板上的“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各挂一个脚本实现相互检测触发
 前文:https://blog.csdn.net/Jaihk662/article/details/86760441(碰撞检测)PS:注释和讲解部分在代码中一、触发器触发事件:当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件触发用途:不与目标物体发生直接的碰撞,而是只要进入目标物体的“触发范围”就能执行某些特定操作打开触发器:选中碰撞体组件面板上的“I... public class CameraController : MonoBehaviour { // store a public reference to the Player game object, so we can refer to it's Transform public GameObject player; // Store...
unity3d游戏几何冲刺的常用触发器 如果有一件事是几何冲刺这款游戏做得很好的,那就是触发器。在这里,我将一些最常用和最重要的触发器从几何冲刺中提取出来,重新制作成可以在Unity中使用的形式,这样您就可以将它们用于您的项目中。说明如何在场景中构建触发器以及如何正确地使用它们。 -颜色触发器(和颜色背景触发器) -脉冲触发器 -移动触发器 -旋转触发器 -生成触发器 要将此包导入您的Unity项目中,在菜单栏中选择“Assets”->“导入包”->“自定义包”,然后选择从此页面下载的文件即可。 触发器是指存放在数据库中,并且被隐含执行的存储过程。当发生特定事件时,Oracle会自动执行触发器的相应代码。 SQL> --当我们对empnew执行删除操作之后,它就会出现一个提示信息,提示:这是删除操作! SQL> CREATE TRIGGER first_trigger 2 AFTER DELETE 3 ON empnew 4 BEGIN 5 DBMS_OUTPUT.put_line('这是删除的操作!'); 6 END;
Unity中可以使用触发器来触发检测。你可以在触发器上面挂载脚本,然后在脚本中编写触发检测的代码。 例如,你可以使用 OnTriggerEnter() 函数来检测物体是否进入触发器,或者使用 OnTriggerStay() 函数来检测物体是否在触发器内部停留。 这是一个简单的例子,其中脚本挂载在触发器上,当物体进入触发器时会在控制台输出消息: using UnityEngine; public ...
触发器是一种刚体,但不会阻止运动状态,当你接触这个触发器,他会给系统发送一条消息,以便下一步对信息的处理。 创建触发器 .在 Inspector 中,找到 Box Collider 2D 组件。启用 Is Trigger 属性复选框。 勾选触发器即可。 public class HealthCollectible : MonoBehaviour void OnTriggerEnter2D(Collider2D other) Debug.Log("Object
在数据库中,触发器是一种特殊的存储过程,它在特定的数据库事件(例如插入、更新或删除)发生时自动执行。触发器通常用于对数据库中的数据进行约束、验证或引用完整性等操作。 要创建触发器,可以使用 CREATE TRIGGER 语句,并指定触发器名称、触发器类型(BEFORE或AFTER)、事件(INSERT、UPDATE或DELETE)、表名等信息。在触发器的定义中,可以使用 NEW 和 OLD 关键字来引用插入、更新或删除操作中受影响的行的值。 例如,以下是一个在每次插入新行时自动更新修改时间的触发器: CREATE TRIGGER update_modified_time AFTER INSERT ON my_table FOR EACH ROW BEGIN UPDATE my_table SET modified_time = NOW() WHERE id = NEW.id; 在这个触发器中,AFTER INSERT 表示它在每次插入新行之后执行,FOR EACH ROW 表示它对每一行都执行一次。在 BEGIN 和 END 之间的代码将更新修改时间为当前时间。NEW.id 表示插入的新行的 id 值。 使用触发器时需要注意触发器的效率和性能,过多的触发器可能会导致数据库响应变慢。同时,触发器的复杂性也需要谨慎考虑,以避免出现不可预测的行为。