当前位置: 首页 > news >正文

Unity 关于点击不同物品移动并触发不同事件

关于点击不同物品触发不同事件

可以实现在界面中点击不同的物体,移动到物品附近位置,然后触发对应的事件。

首先建立一个公共管理的类:

public class InteractionObject : MonoBehaviour
{private NavMeshAgent PlayerAgent;private bool haveinteracted=false;//用于判断方法已经调用public void OnClick(NavMeshAgent PlayerAgent) {this.PlayerAgent = PlayerAgent;PlayerAgent.stoppingDistance = 2;//寻路停止距离PlayerAgent.SetDestination(transform.position);//移动到寻路点haveinteracted = false;}private void Update(){if (PlayerAgent != null&&haveinteracted==false&&PlayerAgent.pathPending==false)//后边是判断路径是否计算完成{if (PlayerAgent.remainingDistance <= 2)//距离目标点的距离是否小于2米{Interact();//调用Interact()方法haveinteracted = true;}}}protected virtual void Interact() //便于重写{print("点到了什么东西了");}
}

创建角色点击移动并判断点到了什么东西的脚本:

public class PlayerRoutine : MonoBehaviour
{// Start is called before the first frame updateprivate NavMeshAgent PlayerAgent;void Start(){PlayerAgent = GetComponent<NavMeshAgent>();//获取寻路组件}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0))//点击鼠标左键{Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);//创建一条射线RaycastHit hit;bool isCollide = Physics.Raycast(ray, out hit);if (isCollide){if (hit.collider.tag == "Ground")//假如点击物体的标签为Ground{PlayerAgent.stoppingDistance = 0;//停止距离为0PlayerAgent.SetDestination(hit.point);//移动到点击位置}else if (hit.collider.tag == "NPC") //假如点击物体的标签为NPC{hit.collider.GetComponent<InteractionObject>().OnClick(PlayerAgent);//调用InteractionObject中的Onclick方法}else if (hit.collider.tag == "Item") {hit.collider.GetComponent<InteractionObject>().OnClick(PlayerAgent);}}}}
}

接下来给不同的物体写不同的事件,通过重写Interact的方法实现,比如说点到了NPC:

public class NPCObject : InteractionObject//继承公共管理类
{protected override void Interact()//重写Interact方法{print("我就是NPC!");}
}

点到物品

public class ItemObject : InteractionObject
{protected override void Interact(){print("我就是个东西!");}
}

最上边是一个简单的相关Demo,可以研究一下。

相关文章:

Unity 关于点击不同物品移动并触发不同事件

关于点击不同物品触发不同事件 可以实现在界面中点击不同的物体&#xff0c;移动到物品附近位置&#xff0c;然后触发对应的事件。 首先建立一个公共管理的类&#xff1a; public class InteractionObject : MonoBehaviour {private NavMeshAgent PlayerAgent;private bool …...

c++IO库详细介绍

文章目录 前言c IO 类简介1. iostream库iostream 类标准IO对象 2. fstream库fstream 类 3. stringstream库stringstream 类 格式化和控制错误处理 IO对象无拷贝或赋值IO条件状态主要的状态标志检查流状态控制流状态示例 管理输出缓冲主要操作示例 文件输入输出使用文件流对象示…...

海外静态IP和动态IP有什么区别?推荐哪种?

什么是静态ip、动态ip&#xff0c;二者有什么区别&#xff1f;哪种好&#xff1f;关于这个问题&#xff0c;不难发现&#xff0c;在知道、知乎上面的解释有很多&#xff0c;但据小编的发现&#xff0c;这些回答都是关于静态ip和动态ip的专业术语解释&#xff0c;普通非专业人事…...

OpenHarmony从入门到放弃(一)

OpenHarmony从入门到放弃&#xff08;二&#xff09; 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目&#xff0c;其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…...

Unity3D UGUI图集打包与动态使用(TexturePacker)

制作图集的好处&#xff1a; 众所周知CPU是用来处理游戏的逻辑运算的&#xff0c;而GPU是用来处理游戏中图像的。在GPU中&#xff0c;我们要绘制一个图像需要提交图片&#xff08;纹理&#xff09;到显存&#xff0c;然后再进行绘制&#xff08;在这个过程中会产生一次DrawCall…...

java maven项目添加oracle jdbc的依赖

一般添加依赖是直接在pom.xml中添加配置即可&#xff0c;Maven会自动获取对应的jar包&#xff0c;但是oracle驱动依赖添加后会显示红色&#xff0c;代表找不到依赖项&#xff0c;是因为Oracle授权问题&#xff0c;Maven3不提供Oracle JDBC driver&#xff0c;为了在Maven项目中…...

【UEFI基础】EDK网络框架(环境配置)

环境配置 为了能够让使用测试BIOS的QEMU与主机&#xff08;就是指普通的Windows系统&#xff0c;我们使用它来编译BIOS和启动QEMU虚拟机&#xff09;通过网络连接&#xff0c;需要额外的配置。 首先是下载和安装OpenVPN&#xff08;这里安装的是OpenVPN-2.5.5-I601-amd64.msi…...

K8S学习指南(60)-K8S源代码走读之API-Server

文章目录 API Server 的代码结构API Server 的核心逻辑1. 请求处理流程1.1 HTTP 请求处理1.2 认证和授权1.3 API 版本处理1.4 资源路由1.5 资源处理1.6 响应生成 2. 存储层2.1 存储接口定义2.2 存储实现 二次开发扩展点1. 插件机制1.1 插件注册1.2 插件实现 2. 自定义资源定义&…...

基于深度学习的交通标志图像分类识别系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细探讨了一基于深度学习的交通标志图像识别系统。采用TensorFlow和Keras框架&#xff0c;利用卷积神经网络&#xff08;CNN&#xff09;进行模型训练和预测&#xff0c;并引入VGG16迁移学习…...

使用uni-app editor富文本组件设置富文本内容及解决@Ready先于onload执行,无法获取后端接口数据的问题

开始使用富文本组件editor时&#xff0c;不知如何调用相关API设置富文本内容和获取内容&#xff0c;本文将举例详解 目录 一.了解editor组件的常用属性及相关API 1.属性常用说明 2.富文本相关API说明 1&#xff09;editorContext 2&#xff09; editorContext.setContents…...

Spring高手之路-Spring事务的传播机制(行为、特性)

目录 含义 七种事务传播机制 1.REQUIRED&#xff08;默认&#xff09; 2.REQUIRES_NEW 3.SUPPORTS 4.NOT_SUPPORTED 5.MANDATORY 6.NEVER 7.NESTED 含义 Spring事务的传播机制是指在多个事务方法相互调用时&#xff0c;如何处理这些事务的传播行为。对应七种事务传播行为…...

简易机器学习笔记(八)关于经典的图像分类问题-常见经典神经网络LeNet

前言 图像分类是根据图像的语义信息对不同类别图像进行区分&#xff0c;是计算机视觉的核心&#xff0c;是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用&#xff0c;如&#xff1a;安防领域的人脸识别和…...

pytest conftest通过fixture实现变量共享

conftest.py scope"module" 只对当前执行的python文件 作用 pytest.fixture(scope"module") def global_variable():my_dict {}yield my_dict test_case7.py import pytestlist1 []def test_case001(global_variable):data1 123global_variable.u…...

系列五、搭建Naco(集群版)

一、搭建Naco&#xff08;集群版&#xff09; 1.1、前置说明 &#xff08;1&#xff09;64位Red Hat7 Linux 系统&#xff1b; &#xff08;2&#xff09;64位JDK1.8&#xff1b;备注&#xff1a;如果没有安装JDK&#xff0c;请参考【系列二、Linux中安装JDK】 &#xff08;3&…...

JavaScript中alert、prompt 和 confirm区别及使用【通俗易懂】

✨前言✨   本篇文章主要在于&#xff0c;让我们看几个与用户交互的函数&#xff1a;alert&#xff0c;prompt 和confirm的使用及区别 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&…...

【GoLang入门教程】Go语言几种标准库介绍(四)

编程语言的未来&#xff1f; 文章目录 编程语言的未来&#xff1f;前言几种库fmt库 (格式化操作)关键函数&#xff1a;示例 Go库标准库第三方库示例 html库(HTML 转义及模板系统)主要功能&#xff1a;示例 总结专栏集锦写在最后 前言 上一篇&#xff0c;我们介绍了debug、enco…...

面试算法:快速排序

题目 快速排序是一种非常高效的算法&#xff0c;从其名字可以看出这种排序算法最大的特点就是快。当表现良好时&#xff0c;快速排序的速度比其他主要对手&#xff08;如归并排序&#xff09;快2&#xff5e;3倍。 分析 快速排序的基本思想是分治法&#xff0c;排序过程如下…...

航空业数字化展翅高飞,开源网安专业服务保驾护航

​某知名航空公司是中国首批民营航空公司之一&#xff0c;运营国内外航线200多条&#xff0c;也是国内民航最高客座率的航空公司之一。在数字化发展中&#xff0c;该航空公司以数据驱动决策&#xff0c;通过精细化管理、数字创新和模式优化等方式&#xff0c;实现了精准营销和个…...

SpringBoot学习(三)-员工管理系统开发(重在理解)

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! 本文是基于狂神老师SpringBoot教程中的员工管理系统从0到1的实践和理解。该系统应用SpringB…...

2 Windows网络编程

1 基础概念 1.1 socket概念 Socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。Socket本质上是一个抽象层&#xff0c;它是一组用于网络通信的API&#xff0c;包括了一系列…...

OpenClaw更换stepfun/step-3.5-flash模型报错:Unknown model 解决(核心:漏加前缀)

OpenClaw更换stepfun/step-3.5-flash模型报错&#xff1a;Unknown model 解决&#xff08;核心&#xff1a;漏加前缀&#xff09; 摘要&#xff1a;本文聚焦OpenClaw更换stepfun/step-3.5-flash:free模型时&#xff0c;高频报错「Unknown model」的核心解决方法——忘记给主模…...

OpenClaw备份策略:GLM-4.7-Flash模型与技能容灾方案

OpenClaw备份策略&#xff1a;GLM-4.7-Flash模型与技能容灾方案 1. 为什么需要备份OpenClaw环境 去年冬天的一个深夜&#xff0c;我的MacBook突然遭遇硬盘故障。当时OpenClaw正在执行一个长达3小时的自动化数据处理任务&#xff0c;所有中间状态和配置瞬间消失。这次事故让我…...

基于三菱PLC与MCGS组态的农田智能灌溉系统说明(两万字)

基于三菱PLC农田灌溉 包含说明一万 和MCGS组态农田智能灌溉系统说明一万前阵子回豫东老家帮我叔打理那三亩秋月梨果园&#xff0c;那浇地给我整得怀疑人生——三伏天顶着三十七八度的太阳&#xff0c;扛着铁锹跑遍地头开电磁阀&#xff0c;中午热得头晕就算了&#xff0c;晚上还…...

手指划过屏幕放大模型界面,环氧树脂层和纤维基体在激光路径下呈现出清晰的物理场分布。突然发现这个双层材料烧蚀模型跑得格外顺畅——看来前几天通宵调参没白费

comsol激光清洗、烧蚀双层材料 表面一层50μm厚度的环氧树脂(可更换成其他材料)&#xff0c;基体材料为纤维材料。 添加功率为13W的激光进行清洗或烧蚀 模型非常成功、角度选择很奈斯在COMSOL里建模时有个小细节特别关键&#xff1a;把环氧树脂层的厚度参数设为全局变量。别小看…...

双模型协作:OpenClaw同时调用GLM-4.7-Flash与Coder模型实战

双模型协作&#xff1a;OpenClaw同时调用GLM-4.7-Flash与Coder模型实战 1. 为什么需要双模型协作&#xff1f; 在我的日常开发工作中&#xff0c;经常遇到这样的场景&#xff1a;需要先理解一个复杂需求&#xff08;比如"帮我写个爬虫抓取知乎热榜并分析关键词"&am…...

COMSOL数值模拟:N2和CO2混合气体在THM热流固三场耦合下增强瓦斯抽采

COMSOL数值模拟&#xff0c;实现N2和CO2混合气体在THM热流固三场耦合情况下增强瓦斯&#xff08;煤层气抽采&#xff09;煤层气抽采效率提升这事儿&#xff0c;最近在实验室搞了个骚操作——往煤层里怼氮气和二氧化碳的混合气。说人话就是拿这俩气体当开塞露&#xff0c;把卡在…...

vLLM与SGLang多模型统一API部署实战指南

1. 为什么需要多模型统一API部署 在实际生产环境中&#xff0c;我们经常会遇到需要同时部署多个AI模型的场景。比如一个智能客服系统可能需要同时支持问答、情感分析和文本摘要等多个功能&#xff0c;每个功能背后可能对应不同的模型。如果每个模型都单独部署一套服务&#xff…...

uniapp中如何用lottie-miniprogram加载json动画?5分钟搞定炫酷效果

Uniapp中5分钟集成Lottie动画&#xff1a;从原理到实战的完整指南 在移动应用开发中&#xff0c;精美的动画效果往往能显著提升用户体验。对于Uniapp开发者来说&#xff0c;Lottie-miniprogram提供了一种高效的方式&#xff0c;可以直接加载设计师导出的JSON动画文件&#xff0…...

别再只盯着IoU了!用Python手把手教你计算语义分割的95% Hausdorff距离(附完整代码)

超越IoU&#xff1a;用Python实战95% Hausdorff距离的医学影像分割评估 当我们在医院看到CT扫描图像上肿瘤边缘被红色轮廓线精准勾勒时&#xff0c;很少有人会思考这背后的算法是如何评估自己分割结果的准确性的。传统指标如IoU&#xff08;交并比&#xff09;和Dice系数固然流…...

TSMaster与珠海创芯CAN卡的集成指南

1. 珠海创芯CAN卡与TSMaster的基础认知 第一次接触珠海创芯CAN卡时&#xff0c;我和很多工程师一样好奇&#xff1a;这个硬件到底有什么特别之处&#xff1f;实测下来发现&#xff0c;它最大的优势在于高性价比和兼容性。珠海创芯的CAN卡采用标准USB接口&#xff0c;支持CAN2.0…...