Unity之触发器

news2025/1/17 18:10:28

目录

📕一、触发器概念 

📕二、碰撞与触发的区别

📕三、触发器小实例 

一、触发器概念 

第一次玩侠盗猎车手是在小学,从那以后就开启了我的五星好市民之路。

 下面是小编在小破站截的图,这是罪恶都市最开始的地方,大家一定很熟悉:

老市民们都知道走到粉红色圈里会触发剧情,它是控制游戏玩法和剧情走向的重要模块,这就是小编对触发器的理解。

 类似的功能在很多游戏中都有,触发器有看得见的(罪恶都市)也有看不见的(荒野大镖客2)

本篇带大家做一个简单的触发器小实例。


二、碰撞与触发的区别

准备工作:

  1. 我们新建一个平面(地面)、胶囊(玩家)、立方体(墙)
  2. 胶囊挂载 Rigidbody 组件,冻结旋转让它保持直立,挂载能使胶囊移动的脚本作为我们控制的玩家;
  3. 把立方体拉长形成一堵墙,新建材质添加颜色,让胶囊和墙更明显

胶囊: 

public class PlayerControl : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //水平轴
        float horizontal = Input.GetAxis("Horizontal");
        //垂直轴
        float vertical = Input.GetAxis("Vertical");
        //创建成一个方向向量
        Vector3 dir = new Vector3(horizontal, 0, vertical);

        //朝方向向量移动
        transform.Translate(dir * 10 * Time.deltaTime);
    }
}

做好准备工作后我们按实现效果摆放好运行,控制胶囊去撞,发现过不去: 

有碰撞组件当然过不去了,那我们把墙变成一个触发器来看看。

很简单,把墙Box Collider组件中的是触发器属性勾上就可以了 √,再看一下效果:

可以看到这次胶囊就穿过去了,碰撞更像一个实物实体可触摸,触发像是一个虚拟的东西但它又是真实存在的,这就是他们的区别。

 三、触发器小实例 

我们先放效果图:我们控制玩家直行有墙过不去,走到特定位置触发机关墙消失,就可以通过了

  1.  把墙Box Collider组件中的是触发器属性取消勾选,作为一个实实在在的墙(doge.jpg)
  2. 新建一个立方体作为触发器,把立方体中Box Collider组件触发器属性勾选 √
  3. 立方体挂载我们编写的CubeControl脚本作为触发器触发后执行的动作
  4. 把立方体的MeshRenderer组件取消勾选,这样我们就看不到立方体了

注:这里的绿色边框是碰撞检测的边框同样也是触发器检测的边框

 触发器检测的三个方法,小编写上注释了

public class CubeControl : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    
    //进入触发: 角色进入触发器就会执行
    private void OnTriggerEnter(Collider other)
    {
        //获取墙
        GameObject wall = GameObject.Find("Wall");
        //如果不为空说明获取到了
        if (wall != null)
        {
            //获取到墙改为非激活状态(墙消失),这样我们控制的角色就可以走过去了
            wall.SetActive(false);
        }
    }
    
    //在触发中: 进入触发后会一直执行
    private void OnTriggerStay(Collider other)
    {
        
    }
    
    //触发结束: 完全离开触发区域执行
    private void OnTriggerExit(Collider other)
    {
        
    }
}

 触发器小实例就做完了,点击运行就是效果图的场景了,拜拜┏(^0^)┛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构奇妙旅程之二叉树初阶

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

深度好文:MySQL体系结构

MySQL采用的是客户/服务器体系结构,实际是有两个程序,一个是MySQL服务器程序,指的是mysqld程序,运行在存放数据库的机器上,负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据库的内容&…

在IntelliJ IDEA中集成SSM项目

SSM项目:springMVC为控制器、spring 为事务层、 MyBatis 负责持久 首先看下集成后项目结构: 1、打开IntelliJ IDEA,点击 "File" -> "New" -> "Project"。 点击Finish,此时我们就已经创建了一…

Git怎么将文件夹上传至github,全过程

小白建议参考github文件上传全流程-新手入门系列(超详细!!!) 中间可能会有报错 $ ssh -T gitgithub.com ssh: connect to host github.com port 22: Connection timed out 这时,参考,如何解决&a…

REVIT二次开发修改轴网

REVIT二次开发修改轴网 步骤1 步骤2 步骤3 功能实现在这 using System; using System.Collections.Generic; using System.Linq; using

【UE 材质】简单的纹理失真、溶解效果

目录 1. 失真效果 2. 溶解效果 3. 失真溶解 我们一开始有这样一个纹理 1. 失真效果 其中纹理节点“DistortTexture”的纹理为引擎自带的纹理“T_Noise01”,我们可以通过控制参数“失真度”来控制纹理的失真程度 2. 溶解效果 3. 失真溶解

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解:private是访问修饰符的一种,访问修饰符规定了访问权限. 作用: ​ 1.private修饰属性:该属性只能在类的内部使用 ​ 2.private修饰方法:该方法只能在类的内部使用 应用场景&#xff1…

【算法】算法(模拟、指针等)解决字符串类题目(C++)

文章目录 1. 前言2. 解决 字符串类算法题14.最长公共前缀5.最长回文子串67.二进制求和43.字符串相乘 1. 前言 字符串题目有很多种,这里筛选几个考察模拟、双指针等的题目,并用相关算法解决。 2. 解决 字符串类算法题 14.最长公共前缀 思路 题意分析&…

【Mybatis】说一下 mybatis 的一级缓存和二级缓存

​ 🍎个人博客:个人主页 🏆个人专栏:Mybatis ⛳️ 功不唐捐,玉汝于成 ​ 目录 前言 正文 一级缓存(Local Cache): 范围: 生命周期: 默认开启&…

数据科学与大数据导论期末复习笔记(大数据)

来自于深圳技术大学,此笔记涵盖了期末老师画的重点知识,分享给大家。 等深分箱和等宽分箱的区别:等宽分箱基于数据的范围来划分箱子,每个箱子的宽度相等。等深分箱基于数据的观测值数量来划分箱子,每个箱子包含相同数量…

tcpdump常用参数以及wireshark密文解密

tcpdump常用参数以及wireshark密文解密 文章目录 一、tcpdump命令和常用参数二、在wireshark中协议解析 tcpdump常用参数 一、tcpdump命令和常用参数 tcpdump常用命令:tcpdump -i eth0 src host 11.6.224.1 and udp port 161 -s 0 -w 161.pcap (161为sn…

(一)ROS的安装

(一)安装ubuntu18.04 系统(虚拟机或者是物理机,在此不再介绍) (二)添加ROS镜像源 apt 列表中没有ROS源,所以要手动添加 sudo sh -c . /etc/lsb-release && echo "deb…

mysql常见的需求,对于关键字的使用

如何使用MySQL将列数据转化为逗号分隔的形式。我们可以使用内置函数GROUP_CONCAT()来实现这个功能 如何使用MySQL将列数据转化为逗号分隔的形式。我们可以使用内置函数GROUP_CONCAT()来实现这个功能,也可以根据实际需求自定义一个函数。这种技术在一些需要对数据进…

imgaug库指南(28):从入门到精通的【图像增强】之旅(万字长文)

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

linux-nfc neard 编译与安装

项目github地址: https://github.com/linux-nfc/neard git clone地址: https://github.com/linux-nfc/neard.git clone完源码切换到目录neard里。这个项目需要依赖一下库: - GCC compiler - D-Bus library - GLib library - Netlink (lib…

go语言(一)----声明常量

package mainimport ("fmt""time" )func main() {fmt.Print("hello go!")time.Sleep(1 * time.Second)}运行后,结果如下: 1、golang表达式中,加;和不加;都可以 2、函数的{和函数名一…

.net core 6 使用注解自动注入实例,无需构造注入 autowrite4net

像java使用autowrite一样使用 1、前提先注册到ioc容器当中 builder.Services.AddScoped 2、nuget引入AutoWrite4Net 3、启用 //启用自动注入 app.UseAutoWrite(); 4、在类上使用注解 [StartAutoWrite] public class NacosController : ControllerBase 5、实例上使用注解 …

【Linux】nc 网络诊断 | 文件传输 命令详解

目录 一、命令简介 二、命令使用 2.1 测试服务器 2.2 端口连通性测试 2.2.1tcp端口连通性测试 2.2.2udp端口连通性测试 2.3 文件及目录的传输 2.3.1 文件传输(TCP端口) 2.3.2 文件传输(UDP端口) 相关文章: 【网络】抓包工具Wireshark下载安装和基本使用教…

强化加密生态合规性:Token Explorer 助你一臂之力!

随着加密市场监管的不断加强,项目的合规风险可能会在一夜之间威胁到其可行性。然而,通过智能的分析技术进行全面的代币审计,可以帮助我们及时发现问题,保护项目的声誉。 Token Explorer 提供智能的专业分析,让我们了解…

linux安装QQ(官方正版)

QQ官网上有支持linux系统的版本,所以去官网直接下载正版就好。 安装步骤: 1.进入官网:https://im.qq.com/linuxqq/index.shtml 2.选择版本:X86版下载dep 如下所示: 3.下载qq安装包: 4.使用命令安装qq s…