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

【Unity】EventSystem.current.IsPointerOverGameObject()对碰撞体起作用

本来我是用 EventSystem.current.IsPointerOverGameObject()来检测是否点击在UI上的,但是发现,他对我的碰撞体也是返回ture,研究半天。。。。找不出问题,然后发现我的相机上挂载了PhysicsRaycaster,去掉之后就好了,至于为什么相机上挂载PhysicsRaycaster,好像是我的别的同事做的一个物体拖拽,用了 IDragHandler, IBeginDragHandler, IEndDragHandler,来做对3D物体的拖拽。。。我真的是无语。。。他的代码是这样的。。。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using QFramework;public class ObjDrag : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{private Vector3 ObjVector3 = Vector3.zero;public string deskTag = "desk";private Collider collider;/// <summary>/// isDrag等于false无法交互/// </summary>public bool isDrag = false;void Start(){collider = GetComponent<Collider>();}public void OnBeginDrag(PointerEventData eventData){ObjVector3 = this.transform.position;if (isDrag&&Input.GetMouseButton(0)){StringEventSystem.Global.Send<string>("Begin", eventData.pointerDrag.name);Debug.Log(eventData.pointerDrag.name);}}public void OnEndDrag(PointerEventData eventData){if (isDrag){this.transform.position = ObjVector3;StringEventSystem.Global.Send<string>("EndDrag", eventData.pointerDrag.name);Debug.Log(eventData.pointerDrag.name);}}/// <summary>/// 物体可拖拽/// </summary>/// <param name="eventData"></param>public void OnDrag(PointerEventData eventData){if (isDrag && Input.GetMouseButton(0)){Vector3 screenpos = Camera.main.WorldToScreenPoint(transform.position);Vector3 mouseScreenPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenpos.z);this.transform.position = Camera.main.ScreenToWorldPoint(mouseScreenPos);Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);var hits = Physics.RaycastAll(ray);foreach (var item in hits){if (item.collider != null && item.collider.tag == deskTag){var dis0 = Vector3.Distance(Camera.main.transform.position, item.point);var offset = collider.bounds.size.magnitude / 2;var dis1 = Vector3.Distance(Camera.main.transform.position, transform.position) + offset;if (dis1 > dis0){var precent = 1 - (offset / dis0);transform.position = Camera.main.transform.position + (item.point - Camera.main.transform.position) * precent;//transform.position = item.point;}//transform.position = item.point;break;}}}}}

然后必须在摄像机上挂载Unity UGUI的PhysicsRaycaster (物理射线检测)

下面介绍一下:

PhysicsRaycaster

【Unity】 UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用-CSDN博客

IDragHandler, IBeginDragHandler, IEndDragHandler

【Unity】IBeginDragHandler、IDragHandler 和 IEndDragHandler 介绍-CSDN博客

问题就是他们都是用于UI 元素的,然后他用在了3D物体上,导致对我的3D物体起作用,如果一定要在相机上挂载PhysicsRaycaster,又要EventSystem.current.IsPointerOverGameObject只对你的UI 元素起作用,那么可以在这个组件上,用EventMask:指定哪些层的UI元素可以接收事件。比如你的模型是层级是

那么你就可以在EventMask上不勾选Model

 

这样 EventSystem.current.IsPointerOverGameObject()就不会对你指定的模型碰撞体起作用了。。。

相关文章:

【Unity】EventSystem.current.IsPointerOverGameObject()对碰撞体起作用

本来我是用 EventSystem.current.IsPointerOverGameObject()来检测是否点击在UI上的&#xff0c;但是发现&#xff0c;他对我的碰撞体也是返回ture,研究半天。。。。找不出问题&#xff0c;然后发现我的相机上挂载了PhysicsRaycaster&#xff0c;去掉之后就好了&#xff0c;至于…...

形态学操作—闭运算

闭运算&#xff08;Closing&#xff09;是图像形态学中的一种操作&#xff0c;它结合了膨胀&#xff08;Dilation&#xff09;和腐蚀&#xff08;Erosion&#xff09;操作。闭运算的原理是先对图像执行腐蚀操作&#xff0c;然后再进行膨胀操作。这个过程能够消除图像中的小孔洞…...

HEVC-SCC rgb file input

关键字 csc allocateCSCBuffer&#xff08;&#xff09;-> m_apcPicYuvCSC xCheckRDCostIntraCSC():更简单&#xff0c; enum ACTRDTestTypes { ACT_TWO_CLR 0, //two color space ACT_TRAN_CLR 1, //transformed color space ACT_ORG_CL…...

XG916Ⅱ轮式装载机后驱动桥设计机械设计CAD

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;装载机 获取完整论文报告工程源文件 本次设计内容为XG916Ⅱ装载机后驱动桥设计&#xff0c;大致上分为主传动的设计&#xff0c;差速器的设计&#xff0c;半轴的设计&#xff0c;最终传动的设计四大部分。其中主传动锥齿轮…...

pcr扩增原理中的变性 退火 延申扩增

一、PCR简介 聚合酶链式反应&#xff08;PCR&#xff09;是一种用于放大扩增特定的DNA片段的分子生物学技术&#xff0c;它可看作是生物体外的特殊DNA复制&#xff0c;PCR的最大特点是能将微量的DNA大幅增加。 二、PCR原理 1.背景 DNA的半保留复制是生物进化和传代的重要途…...

C语言——输入一个4位正整数,输出其逆数。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j 0;int a1,a2,a3,a4;printf("输入一个4位正整数&#xff1a;\n");scanf("%d",&i);a1 i/1000; a2 i/100%10; a3 i/10%10; a4 i%10; printf("千位a1%d,百位a…...

jQuery_02 引入jQuery,初试牛刀

引入jquery文件 我们在官网上点击dowmload那个 会发现进入了一个网页&#xff0c;里面全部是代码&#xff0c;你可能还在想为什么下载不了&#xff0c;其实jquery不跟vue一样&#xff0c;整个jquery就是一个js文件而已&#xff0c;所以直接ctrla 全选 ctrlc复制 &#xff0c;然…...

pandas获取年月第一天、最后一天,加一秒、加一天、午夜时间

Timestamp对象 # ts = pandas.Timestamp(year=2023, month=10, day=15, # hour=15, minute=5, second=50, tz="Asia/Shanghai") ts = pandas.Timestamp("2023-10-15 15:05:50", tz="Asia/Shanghai") # 2023-10-15 15:05…...

Unsupervised Condition GAN

Unsupervised Condition GAN主要有两种做法&#xff1a; Direct Transformation 直接输入domain X图片&#xff0c;经过Generator后生成对应的domain Y的图像。这种转化input和output不能够差太多。通常只能实现较小的转化&#xff0c;比如改变颜色等。 Projection to Commo…...

Crypto(11)HECTF-rsarsa(明文存在线性关系)

题目如下&#xff1a; from functools import reduce from Crypto.Util.number import * import random from secret import flag,hintdef generate_PQ(bits):x getPrime(bits) >> bits//2 << bits//2#右移bit//2位后左移bit//2位while True:p x random.getran…...

论文阅读 Forecasting at Scale (二)

最近在看时间序列的文章&#xff0c;回顾下经典 论文地址 项目地址 Forecasting at Scale 3.2、季节性 3.3、假日和活动事件3.4、模型拟合3.5、分析师参与的循环建模4、自动化预测评估4.1、使用基线预测4.2、建模预测准确性4.3、模拟历史预测4.4、识别大的预测误差 5、结论6、致…...

刷题感悟w

题目很长的一定要慢慢把题目的意思搞清楚 有重复操作不知道怎么办 可以用数组去标记 你好&#xff01;在C中&#xff0c;replace 函数通常是用于替换容器&#xff08;例如 std::vector 或 std::string&#xff09;中的特定元素的函数。以下是 std::replace 函数的一般用法&…...

记一次linux操作系统实验

前言 最近完成了一个需要修改和编译linux内核源码的操作系统实验&#xff0c;个人感觉这个实验还是比较有意思的。这次实验总共耗时4天&#xff0c;从对linux实现零基础&#xff0c;通过查阅资料和不断尝试&#xff0c;直到完成实验目标&#xff0c;在这过程中确实也收获颇丰&…...

java操作富文本插入到word模板

最近项目有个需求&#xff0c;大致流程是前端保存富文本&#xff08;html的代码&#xff09;到数据库&#xff0c;后台需要将富文本代码转成带格式的文字&#xff0c;插入到word模板里&#xff0c;然后将word转成pdf&#xff0c;再由前端调用接口下载pdf文件&#xff01; 1、思…...

JMeter---BeanShell实现接口前置和后置操作

在JMeter中&#xff0c;可以使用BeanShell脚本来实现接口的前置和后置操作。 下面是使用BeanShell脚本实现接口前置和后置操作的步骤&#xff1a; 1、在测试计划中添加一个BeanShell前置处理器或后置处理器。 右键点击需要添加前置或后置操作的接口请求&#xff0c;选择&quo…...

【Linux】共享内存

文章目录 一、共享内存的原理详谈共享内存的实现过程二、共享内存的接口函数1.shmget2. shmatshmdtshmctl 进程间使用共享内存通信三、共享内存的特性 关于代码 一、共享内存的原理 共享内存是由操作系统维护和管理的一块内存。 共享内存的本质是内核级的缓冲区。 一个进程向…...

五、双向NAT

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 双向NAT1.1.基本原理1.2.NAT Inbound NAT Server1.3.域内NATNAT Server —————————————————————————————————————————————————— 双向NAT 经过前面介绍&#xff0c;…...

P1028 [NOIP2001 普及组] 数的计算

时刻记住一句话&#xff1a;写递归&#xff0c;1画图&#xff0c;2大脑放空&#xff01;&#xff01;&#xff01; 意思是&#xff0c;自己写递归题目&#xff0c;先用样例给的数据画图&#xff0c;然后想一个超级简单的思路&#xff0c;直接套上去就可以了。 上题干&#xff…...

浅析三相异步电动机控制的电气保护

安科瑞 华楠 摘 要&#xff1a;要求三相异步电动机的控制系统不仅要保证电机正常启动和运行&#xff0c;完成制动操作&#xff0c;还要通过相关保护措施维护电动机的安全使用。基于此&#xff0c;本文以电动机电气保护作为研究对象&#xff0c;结合三相异步电动机的机械特点&…...

Java设计模式系列:单例设计模式

Java设计模式系列&#xff1a;单例设计模式 介绍 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法&#xff08;静态方法&#xff09; 比如 Hiberna…...

2026年山东GEO优化服务商排行最新版:8家口碑服务商实力盘点

2025-2026年&#xff0c;生成式AI在各行业的应用持续深化&#xff0c;用户获取信息与服务的习惯逐步从传统搜索框&#xff0c;转向与豆包、DeepSeek、文心一言等AI对话产品的自然交互&#xff0c;这一变革催生了营销领域的新方向——生成式引擎优化&#xff08;GEO&#xff09;…...

AD9516时钟芯片配置避坑指南:从官方软件到FPGA代码的完整流程

AD9516时钟芯片配置避坑指南&#xff1a;从官方软件到FPGA代码的完整流程 在高速数字系统设计中&#xff0c;时钟信号的稳定性和精确性往往决定了整个系统的性能上限。作为时钟树设计中的关键组件&#xff0c;AD9516凭借其灵活的时钟分配能力和低抖动特性&#xff0c;成为众多…...

如何查看Visual Studio中使用的C++的版本

现在的页面&#xff1a;在 解决方案资源管理器 里&#xff0c;右键单击项目名称&#xff1a;弹出上下文菜单&#xff0c;找到属性&#xff08;在下方&#xff09;&#xff0c;点击&#xff1a;在左侧导航栏中找到 配置属性-》C/C》语言&#xff0c;在右侧找到 C语言标准&#x…...

Android Studio布局编辑器偷懒技巧:用Guideline和圆形定位快速实现复杂UI

Android Studio布局编辑器进阶技巧&#xff1a;Guideline与圆形定位实战指南 在移动应用界面设计中&#xff0c;非标准布局往往需要开发者投入大量时间计算坐标位置。传统解决方案要么依赖嵌套视图组导致性能损耗&#xff0c;要么需要手动编写复杂的定位逻辑。ConstraintLayout…...

手把手教你用示波器抓LIN总线波形:从显性/隐性电平到唤醒信号,一次看懂物理层通信

手把手教你用示波器抓LIN总线波形&#xff1a;从显性/隐性电平到唤醒信号&#xff0c;一次看懂物理层通信 在汽车电子系统中&#xff0c;LIN总线作为低成本、低复杂度的串行通信协议&#xff0c;广泛应用于车门控制、座椅调节、空调系统等场景。对于测试工程师和技术支持人员而…...

视觉语义增强的A*路径规划在服务机器人中的应用

1. 视觉辅助A*路径规划&#xff1a;服务机器人导航的智能化升级在服务机器人领域&#xff0c;导航系统正面临一个关键转折点。传统基于激光雷达&#xff08;LiDAR&#xff09;的解决方案虽然能精确构建环境几何模型&#xff0c;却对办公桌上的一份机密文件和地上的一片废纸一视…...

别再只改SSID了!手把手教你用AC+AP和802.11k/v/r协议,在家实现真正的WiFi快速漫游

家庭网络革命&#xff1a;用ACAP与802.11k/v/r协议打造零感知WiFi漫游 当你在客厅用iPad追剧时走进卧室&#xff0c;视频突然卡顿&#xff1b;当你在书房开视频会议走向阳台取资料&#xff0c;画面突然冻结——这些恼人的网络中断&#xff0c;本质上都是传统"伪漫游"…...

如何掌握Python元编程与装饰器:从入门到精通的终极指南

如何掌握Python元编程与装饰器&#xff1a;从入门到精通的终极指南 【免费下载链接】python-guide Python best practices guidebook, written for humans. 项目地址: https://gitcode.com/gh_mirrors/py/python-guide Python作为一门灵活且强大的编程语言&#xff0c;…...

Unity里也能直接放PPT?用Aspose.Slides插件实现PPT加载与分页展示(附打包报错解决方案)

Unity3D中高效集成PPT展示功能的工程实践 在教育培训、产品演示和虚拟现实项目中&#xff0c;经常需要将现有的PPT内容无缝嵌入到Unity应用中。传统方案往往要求开发者重新制作所有幻灯片内容为Unity支持的格式&#xff0c;耗时耗力且难以维护更新。本文将介绍一种基于Aspose.S…...

TypeScript | 为什么是TypeScript成为了时代的选择?

在软件工程的历史长河中&#xff0c;编程语言的兴衰更迭如同潮起潮落。有的语言凭借其开创性的理念昙花一现&#xff0c;有的则因其强大的生态和社区支持而历久弥新。进入2026年&#xff0c;我们正见证着一场深刻的范式转移&#xff1a;TypeScript 已从一个“可选项”演变为构建…...