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

【Unity】检测鼠标点击位置是否有2D对象

在这里提供两种方案,一种是射线检测,另一种是非射线检测。

初始准备步骤:

  1. 创建2D对象(比如2D精灵)
  2. 给要被检测的2D对象添加2D碰撞体(必须是2D碰撞体
  3. 创建一个空对象,再创建一个检测脚本,将检测脚本挂载在这个空对象上
  4. 编写检测脚本

一、非射线检测的方式

using UnityEngine;public class DragTest : MonoBehaviour
{private void Update() {if(Input.GetKeyDown(KeyCode.Mouse0)){//将鼠标坐标转化为世界坐标Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//定义一个2D碰撞体,读取Physics2D.OverlapPoint方法的检测数据Collider2D hitcollider = Physics2D.OverlapPoint(mousePos);if(hitcollider != null){//打印出这个对象的tag名称Debug.Log(hitcollider.gameObject.tag);}}}
}

二、射线检测的方式

using UnityEngine;public class DragTest : MonoBehaviour
{private void Update() {if(Input.GetKeyDown(KeyCode.Mouse0)){//创建一条从屏幕射出的射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//获得射线检测命中到的目标RaycastHit2D hit = Physics2D.Raycast(ray.origin,ray.direction,Mathf.Infinity);if(hit.collider != null){Debug.Log(hit.collider.gameObject.tag);}}}
}

三、特别注意

如果有多个2D物体重叠在一起,那么这两种检测方式的最终检测结果都是叠在最上方的2D物体

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【软考】数据字典(DD)
  • 网络安全(黑客)详细自学路线 一一2024新版
  • 开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新
  • Qt基础操作槽函数
  • docker挂载宿主机文件run命令启动报错
  • 3D技术如何赋能产品个性化定制?
  • Linux配置静态IP详细步骤及联网问题,以及更改主机名问题
  • SpringBoot2:web开发常用功能实现及原理解析-上传与下载
  • Activiti7《第二式:破剑式》——工作流中的以柔克刚
  • Win32 Wmi获取设备信息
  • VMware Workstation Player虚拟机Ubuntu启用Windows共享目录
  • 代码随想录八股训练营第四十天| C++
  • Leetcode Hot 100刷题记录 -Day14(矩阵置0)
  • Nacos未授权访问
  • 大工程师插件下载 官方地址
  • 分享的文章《人生如棋》
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 03Go 类型总结
  • 30天自制操作系统-2
  • django开发-定时任务的使用
  • ES2017异步函数现已正式可用
  • java2019面试题北京
  • Linux各目录及每个目录的详细介绍
  • nginx 负载服务器优化
  • Promise面试题,控制异步流程
  • 大整数乘法-表格法
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 技术:超级实用的电脑小技巧
  • 我是如何设计 Upload 上传组件的
  • 智能网联汽车信息安全
  • AI算硅基生命吗,为什么?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • #laravel 通过手动安装依赖PHPExcel#
  • #pragma预处理命令
  • #单片机(TB6600驱动42步进电机)
  • (09)Hive——CTE 公共表达式
  • (7)svelte 教程: Props(属性)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (八)c52学习之旅-中断实验
  • (笔试题)合法字符串
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • ***检测工具之RKHunter AIDE
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET文档生成工具ADB使用图文教程
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .考试倒计时43天!来提分啦!
  • @GetMapping和@RequestMapping的区别
  • @Mapper作用
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • @Transactional 竟也能解决分布式事务?