【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上的,但是发现,他对我的碰撞体也是返回ture,研究半天。。。。找不出问题,然后发现我的相机上挂载了PhysicsRaycaster,去掉之后就好了,至于…...
形态学操作—闭运算
闭运算(Closing)是图像形态学中的一种操作,它结合了膨胀(Dilation)和腐蚀(Erosion)操作。闭运算的原理是先对图像执行腐蚀操作,然后再进行膨胀操作。这个过程能够消除图像中的小孔洞…...
HEVC-SCC rgb file input
关键字 csc allocateCSCBuffer()-> m_apcPicYuvCSC xCheckRDCostIntraCSC():更简单, enum ACTRDTestTypes { ACT_TWO_CLR 0, //two color space ACT_TRAN_CLR 1, //transformed color space ACT_ORG_CL…...
XG916Ⅱ轮式装载机后驱动桥设计机械设计CAD
wx供重浩:创享日记 对话框发送:装载机 获取完整论文报告工程源文件 本次设计内容为XG916Ⅱ装载机后驱动桥设计,大致上分为主传动的设计,差速器的设计,半轴的设计,最终传动的设计四大部分。其中主传动锥齿轮…...
pcr扩增原理中的变性 退火 延申扩增
一、PCR简介 聚合酶链式反应(PCR)是一种用于放大扩增特定的DNA片段的分子生物学技术,它可看作是生物体外的特殊DNA复制,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位正整数:\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那个 会发现进入了一个网页,里面全部是代码,你可能还在想为什么下载不了,其实jquery不跟vue一样,整个jquery就是一个js文件而已,所以直接ctrla 全选 ctrlc复制 ,然…...
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主要有两种做法: Direct Transformation 直接输入domain X图片,经过Generator后生成对应的domain Y的图像。这种转化input和output不能够差太多。通常只能实现较小的转化,比如改变颜色等。 Projection to Commo…...
Crypto(11)HECTF-rsarsa(明文存在线性关系)
题目如下: 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 (二)
最近在看时间序列的文章,回顾下经典 论文地址 项目地址 Forecasting at Scale 3.2、季节性 3.3、假日和活动事件3.4、模型拟合3.5、分析师参与的循环建模4、自动化预测评估4.1、使用基线预测4.2、建模预测准确性4.3、模拟历史预测4.4、识别大的预测误差 5、结论6、致…...
刷题感悟w
题目很长的一定要慢慢把题目的意思搞清楚 有重复操作不知道怎么办 可以用数组去标记 你好!在C中,replace 函数通常是用于替换容器(例如 std::vector 或 std::string)中的特定元素的函数。以下是 std::replace 函数的一般用法&…...
记一次linux操作系统实验
前言 最近完成了一个需要修改和编译linux内核源码的操作系统实验,个人感觉这个实验还是比较有意思的。这次实验总共耗时4天,从对linux实现零基础,通过查阅资料和不断尝试,直到完成实验目标,在这过程中确实也收获颇丰&…...
java操作富文本插入到word模板
最近项目有个需求,大致流程是前端保存富文本(html的代码)到数据库,后台需要将富文本代码转成带格式的文字,插入到word模板里,然后将word转成pdf,再由前端调用接口下载pdf文件! 1、思…...
JMeter---BeanShell实现接口前置和后置操作
在JMeter中,可以使用BeanShell脚本来实现接口的前置和后置操作。 下面是使用BeanShell脚本实现接口前置和后置操作的步骤: 1、在测试计划中添加一个BeanShell前置处理器或后置处理器。 右键点击需要添加前置或后置操作的接口请求,选择&quo…...
【Linux】共享内存
文章目录 一、共享内存的原理详谈共享内存的实现过程二、共享内存的接口函数1.shmget2. shmatshmdtshmctl 进程间使用共享内存通信三、共享内存的特性 关于代码 一、共享内存的原理 共享内存是由操作系统维护和管理的一块内存。 共享内存的本质是内核级的缓冲区。 一个进程向…...
五、双向NAT
学习防火墙之前,对路由交换应要有一定的认识 双向NAT1.1.基本原理1.2.NAT Inbound NAT Server1.3.域内NATNAT Server —————————————————————————————————————————————————— 双向NAT 经过前面介绍,…...
P1028 [NOIP2001 普及组] 数的计算
时刻记住一句话:写递归,1画图,2大脑放空!!! 意思是,自己写递归题目,先用样例给的数据画图,然后想一个超级简单的思路,直接套上去就可以了。 上题干ÿ…...
浅析三相异步电动机控制的电气保护
安科瑞 华楠 摘 要:要求三相异步电动机的控制系统不仅要保证电机正常启动和运行,完成制动操作,还要通过相关保护措施维护电动机的安全使用。基于此,本文以电动机电气保护作为研究对象,结合三相异步电动机的机械特点&…...
Java设计模式系列:单例设计模式
Java设计模式系列:单例设计模式 介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 比如 Hiberna…...
WarcraftHelper:终极魔兽争霸III兼容性修复指南 [特殊字符]
WarcraftHelper:终极魔兽争霸III兼容性修复指南 🎮 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在现…...
别让大模型“纸上谈兵”:Agent 工具调用(Tool Use)的底层逻辑拆解
上篇博客咱们把 Agent 的“核心闭环”给扒光了,现在你已经知道它本质上是个 while(想 -> 做 -> 看) 的死循环。但这里面藏着一个极其关键的问题:大模型怎么“做”?你直接问普通的大模型:“帮我查一下今天公司的销售额”&…...
从‘因子动物园’到Smart Beta:普通投资者如何用ETF实践因子投资策略?
从‘因子动物园’到Smart Beta:普通投资者如何用ETF实践因子投资策略? 在投资领域,"因子投资"这个概念已经从学术论文走进了大众视野。想象一下,你走进一个充满各种投资策略的"因子动物园",里面栖…...
Honey Select 2 HF Patch:一站式汉化与增强补丁终极指南
Honey Select 2 HF Patch:一站式汉化与增强补丁终极指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日文界面感到困扰吗…...
颠覆微信手动操作:wxauto自动化工具如何将客服响应时间从12分钟压缩到2分钟
颠覆微信手动操作:wxauto自动化工具如何将客服响应时间从12分钟压缩到2分钟 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://git…...
别再死记贝叶斯公式了!用sklearn的CategoricalNB实战Ionosphere数据集,手把手教你搞定分类
别再死记贝叶斯公式了!用sklearn的CategoricalNB实战Ionosphere数据集,手把手教你搞定分类 当你第一次接触机器学习分类任务时,可能会被各种数学公式吓退。但今天我要告诉你一个秘密:实际应用中,你完全不需要死记硬背贝…...
VMware Tools安装后别急着庆祝!共享文件夹设置、分辨率调整与性能优化的完整配置清单
VMware Tools安装后必做的10项深度配置:从能用变好用的进阶指南 当你看到"Enjoy, –the VMware team"的提示时,VMware Tools的安装只是完成了第一步。真正提升虚拟机体验的关键,在于后续这一系列深度配置。本文将带你解锁共享文件夹…...
从数据到故事:用ArcGIS布局编辑打造专业级人口结构专题图
1. 从数据到故事的思维转变 很多人第一次接触ArcGIS制作专题地图时,往往只关注技术操作本身。我曾经也是这样,花了大量时间研究工具按钮的位置,却忽略了最重要的部分——如何让数据讲好一个故事。直到有一次,我把精心制作的"…...
【AHC】async-http-client 的 getResponseBody() 是否自动释放资源?
async-http-client 的 getResponseBody() 是否自动释放资源?与 HttpAsyncClient 的 HttpEntity 手动管理对比全解析 发布时间:2026年02月07日 作者:九师兄 一、问题引入:一次因响应体未释放导致的 Direct Memory OOM 事故 2025 年,某实时用户画像平台在使用 async-http-…...
2025届最火的降重复率神器推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低AIGC也就是人工智能生成内容的比例,其核心是要减少机器生成所具有的典型特…...
