机关——用钥匙开对应的门

代码展示

玩家背包代码(挂载到玩家身上)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 玩家背包脚本,用来记录玩家道具
/// </summary>
public class MyBag : MonoBehaviour
{//public bool isHasKey=false;//是否有钥匙public List<string>keyList = new List<string>();//钥匙列表
}

钥匙代码(挂载到钥匙身上)

注意:钥匙身上必须要有触发器(挂载到钥匙身上即可)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Key : MonoBehaviour
{public string keyID;//钥匙编号private void OnTriggerEnter(Collider other){if(other.CompareTag("Player")){//修改玩家背包中的钥匙数据为真if(other.GetComponent<MyBag>()!=null){//other.GetComponent<MyBag>().isHasKey = true;other.GetComponent<MyBag>().keyList.Add(keyID);}Destroy(gameObject);}}
}

门的代码(挂载的门的触发器身上)

门的触发器可以单独拿出来,也可以就在门里面加组件

但是在门自身身上加组件时,触发器会随着门的移动而移动,所以用的时候要注意范围

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class _2_OpenDoor : MonoBehaviour
{[SerializeField] GameObject doorObj;//想要控制的门private bool isNear=false;//玩家是否到达门附近[SerializeField] private string doorID;//门编号// Start is called before the first frame updatevoid Start(){if (doorObj == null)Debug.LogError("请将门物体拽入参数栏!");}private void OnTriggerEnter(Collider other){if (other.CompareTag("Player")/*&&Input.GetKeyDown(KeyCode.E)*/){//doorObj.SetActive(false);//播放开门动画isNear=true;}}private void OnTriggerExit(Collider other){if (other.CompareTag("Player")){//播放关门动画doorObj.GetComponent<Animator>().SetBool("isOpen", false);isNear=false;}}// Update is called once per frameprivate void Update(){if (Input.GetKeyDown(KeyCode.L) && isNear){/*  //检测玩家背包中是否存在钥匙if(GameObject.FindWithTag("Player").GetComponent<MyBag>().isHasKey){ //播放开门动画doorObj.GetComponent<Animator>().SetBool("isOpen", true); }*///播放开门动画if (GameObject.FindWithTag("Player").GetComponent<MyBag>() != null){var mybag = GameObject.FindWithTag("Player").GetComponent<MyBag>();foreach (var keyID in mybag.keyList){if (keyID.Equals(doorID)){doorObj.GetComponent<Animator>().SetBool("isOpen", true);}else{print("玩家没有这扇门的钥匙");}}}}else if(GameObject.FindWithTag("Player").GetComponent<MyBag>() != null){print("玩家没有任何钥匙钥匙");}if (Input.GetKeyUp(KeyCode.L) && isNear){//播放关门动画doorObj.GetComponent<Animator>().SetBool("isOpen", false);}}}

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

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

相关文章

03DDL语言的使用

03DDL语言的使用 第1关&#xff1a;创建数据库任务描述相关知识连接数据库创建数据库 答案 第2关&#xff1a; 创建表任务描述相关知识 答案 第3关&#xff1a;添加字段任务描述相关知识添加字段编程要求 答案 第4关&#xff1a;删除字段任务描述相关知识编程要求 答案 第5关&a…

pytorch学习笔记4

开启tensorboard 在terminal中输入tensorboard --logdir文件名 文件名中不能含有空格 tensorboard --logdirlogs --port6007#将端口调整为6007tensorboard --logdirlogs --port 0 自动分配一个端口&#xff0c;成功访问打开的时候如果发现没数据可以把logs换成文件夹的绝对路径…

【儿童节特辑】用AI创造音乐,变身小小音乐家!

在儿童节这个充满欢笑的日子里&#xff0c;让我们一起探索如何用AI技术为孩子们准备一份特别的礼物——一张由AI生成的音乐专辑。&#x1f3b5;✨ &#x1f3bc; 文字变旋律&#xff1a;开启音乐创作之旅 想象一下&#xff0c;只需一段文字&#xff0c;就能编织出一曲悠扬悦耳…

Python自动实时查询预约网站的剩余名额并在有余额时发邮件提示

本文介绍基于Python语言&#xff0c;自动、定时监测某体检预约网站中指定日期的体检余额&#xff0c;并在有体检余额时自动给自己发送邮件提醒的方法。 来到春招末期&#xff0c;很多单位进入了体检流程。其中&#xff0c;银行&#xff08;尤其是四大行&#xff09;喜欢“海检”…

Day44 动态规划part04

背包问题 01背包问题&#xff1a;每件物品只能用一次完全背包问题&#xff1a;每件物品可以使用无数次 01背包问题 暴力解法&#xff1a;每一件物品其实只有两个状态&#xff0c;取或者不取&#xff0c;所以可以使用回溯法搜索出所有的情况&#xff0c;那么时间复杂度就是 o…

Transformer从0到1的学习【还有2-10,别想太多】

1.高纬度介绍Transformer 1.分为编码Encoders和解码器Decoders&#xff1a;“我爱你”作为编码器Encoders的输入进行编码得到序列码后&#xff0c;作为解码器的输入得到输出即为&#xff0c;“I Love you”。 2.编码器和译码器的具体拆分&#xff1a; 左边的编码器Encoders的…

Pytorch实用教程:pytorch中nn.Linear()用法详解 | 构建多层感知机 | nn.Module的作用 | nn.Sequential的作用

文章目录 1. nn.Linear()用法构造函数参数示例使用场景2. 构建多层感知机步骤代码示例注意事项3. 继承自nn.Module的作用是什么?1. 组织网络结构2. 参数管理3. 模型保存和加载4. 设备管理不继承 `nn.Module` 的后果

【常见的六大排序算法】插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

个人主页 创作不易&#xff0c;感谢大家的关注&#xff01; 文章目录 前言 &#x1f3a1;一、插入排序&#x1f332;二、希尔排序&#x1f389;三、选择排序&#x1f380;四、冒泡排序&#x1f698;五、堆排序&#x1f6f5;六、快速排序1. Hoare版本2. 挖坑法3. 前后指针法4. 非…

详解 Spark 核心编程之 RDD 分区器

一、RDD 分区器简介 Spark 分区器的父类是 Partitioner 抽象类分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 后进入哪个分区&#xff0c;进而决定了 Reduce 的个数只有 Key-Value 类型的 RDD 才有分区器&#xff0c;非 Key-Value 类型的 RDD 分区的值是 No…

头歌动态分区算法第2关:最佳适应算法

编程要求 空闲分区采用带头结点的双向链表来管理,主函数、链表初始化函数和打印函数已实现,只需要补充最佳适应算法分配内存的函数 best_fit以及内存回收的函数recycle()即可。 bool best_fit(int id,int m_size)//使用最佳适应算法给作业分配内存,id为作业号,m_size为作业…

大佬推荐的好用网盘工具

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 前段时间有大佬推荐了一款网盘工具seafile&#xff0c;自己搭建起来试用了一下&#xff0c;发现还挺好用的&#xff0c;这款工具…

【C++】C++11新特性:新的类功能、可变参数模板、STL容器中的empalce相关接口函数、lambda表达式、包装器(function、bind)

目录 一、新的类功能 1.1 移动构造函数和移动赋值运算符重载 1.2 强制生成默认函数的关键字default 1.3 禁止生成默认函数的关键字delete 1.4 其它的类功能 二、可变参数模板 三、STL容器中的empalce相关接口函数 四、lambda表达式 4.1 lambda的引入 4.2 lambda表达式…

openVPN+SmartDNS=openDNS or smartVPN?

正文共&#xff1a;777 字 11 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我们现在已经熟练的掌握了openVPN的部署方式和配置方法&#xff08;带认证的openVPN连接/断开操作指南&#xff09;&#xff0c;还掌握了在CentOS系统部署SmartDNS的方法&#xff08;基于CentOS部署…

查看电脑品牌

查看电脑品牌是了解电脑基本信息的重要步骤&#xff0c;尤其在需要技术支持或升级硬件时&#xff0c;知道电脑的品牌极为关键。下面将详细介绍几种不同的方法来查看电脑品牌&#xff1a; 通过DirectX诊断工具查看品牌型号&#xff1a;使用快捷键WinR打开运行窗口&#xff0c;输…

如何使用 Apache 和 Nginx 创建临时和永久重定向

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 HTTP 重定向,或者 URL 重定向,是一种将一个域名或地址指向另一个的技术。重定向有许多用途,也有几种不同的重定向方式需要考虑。当一个站点需要将请求一个地址…

【网络安全】Web安全基础 - 第二节:前置基础知识- HTTP协议,握手协议,Cookie及Session

本章节主要介绍一些基础知识 d(^_^o) HTTP协议 什么是HTTP 超文本传输协议&#xff08;HyperText Transfer Protocol&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP是一个基于请求与响应&#xff0c;无状态的&#xff0c;应用层协议&#xff0c;…

100.网络游戏逆向分析与漏洞攻防-ui界面的设计-聊天功能的界面与设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Git常用命令1

1、设置用户签名 ①基本语法&#xff1a; git config --global user.name 用户名 git config --global user.email 邮箱 ②实际操作 ③查询是否设置成功 cat ~/.gitconfig 注&#xff1a;签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交…

MulterError: Field name missing 报错解决

Request POST /FileUpload/chunkApi/upload/mProjectNews/Images failed with status code 500. MulterError: Field name missing. 原因&#xff1a;Multer是基于Busboy解析的表单参数信息&#xff0c;经定位发现是解析表单中文本参数时出现了null&#xff0c;故收到MISSION_…

【算法】模拟算法——数青蛙(medium)

题解&#xff1a;模拟算法——数青蛙(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接&#xff1a;LINK 2.题解 用循环进行遍历&#xff0c; 如果该字符为o\o\a\k 找一下前驱字符是否存在 如果存在&#xff0c;前驱字符–&#xff0c;该字符如果不存在&#x…