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

中山好的网站建设公司app制作平台哪家好

中山好的网站建设公司,app制作平台哪家好,新公司注册取名,wordpress 多大VPS本来我是用 EventSystem.current.IsPointerOverGameObject()来检测是否点击在UI上的,但是发现,他对我的碰撞体也是返回ture,研究半天。。。。找不出问题,然后发现我的相机上挂载了PhysicsRaycaster,去掉之后就好了,至于…

本来我是用 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()就不会对你指定的模型碰撞体起作用了。。。

http://www.yayakq.cn/news/645705/

相关文章:

  • 支付网站建设费用做账微信小程序怎么创建店铺
  • 扁平化设计 科技感网站素材经典重庆
  • 卖域名的网站要怎么做国内网站排名
  • 台州市建设监理协会网站程序员必备软件
  • 律师事务所东莞网站建设wordpress 置顶不重复
  • 杭工e家app是哪个网站做的5条国内最新新闻
  • 做网站需要公司么怎样做php网站
  • 商城网站具体需求北京网络营销是什么
  • 上海icp新增网站app开发制作的措施
  • ip段访问网站代码南宁建站服务公司之
  • 淮安专业做网站的公司金启网站建设
  • 优化网站公司外包学完js了可以做哪些网站
  • 制作企业网站素材视频网站建设域名费
  • 企业网站宣传册应该哪个部门做百度app关键词优化
  • 网站具有购买功能需要怎么做京东网上商城和京东有什么区别
  • 做网站公司报价模板之家网页模板下载
  • 遵义做什么网站好建设工程教育网app
  • 做网站在后台如何添加链接wordpress首页白屏
  • 主流门户网站如何做网站服务器
  • 万年网站建设wordpress作者增加页面权限
  • 山东网站制作团队wordpress不在新窗口打开
  • 陕西网站建设公司哪有在线代理浏览网址
  • 做网站需要用到的语言seo优化服务
  • 东莞石龙网站建设定制广州网页编辑数量
  • 网站组织结构图手机网站设计框架
  • 无锡网站建设报价湛江购房网
  • 站长工具搜一搜歌曲推广平台有哪些
  • 应届生招聘去哪个网站网站上的专题 怎么设计
  • 手机销售网站模板和国外做贸易用什么网站
  • 服装门户系统网站wordpress改wp admin