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

超大网站制作素材wordpress 嵌入 php代码

超大网站制作素材,wordpress 嵌入 php代码,蛋花儿wordpress主题,wordpress同步twitter在UI Canvas的Render Mode模式是Screen Space-Camera模式极其容易3D坐标值转UI坐标出错。 **具体原因是#xff1a;**Canvas的Rect Transform锁定#xff0c;其Scale的倍数值不是1#xff0c;所以导致从3D的坐标数值转换成UI坐标时就会出现问题。 正确做法#xff1a; 1、 …在UI Canvas的Render Mode模式是Screen Space-Camera模式极其容易3D坐标值转UI坐标出错。 **具体原因是**Canvas的Rect Transform锁定其Scale的倍数值不是1所以导致从3D的坐标数值转换成UI坐标时就会出现问题。 正确做法 1、 声明变量 3D物体、 UI的RectTransform、 Canvas的RectTransform、 Canvas所使用的Camera2、将物体的世界坐标转换为Canvas内的局部坐标3、设置UI元素的位置为Canvas内的局部坐标代码 public class TitileMove : MonoBehaviour {// 3D物体public Transform object3D;// UI Image的RectTransformpublic RectTransform uiImageRectTransform;// Canvas的RectTransformpublic RectTransform canvasRectTransform;// Canvas所使用的Camerapublic Camera canvasCamera;public GameObject lastSelectedObject;private bool isDragging false;private bool isRotating false;private Vector3 lastMousePosition;private void OnBecameInvisible(){// 当物体不可见时隐藏UI元素uiImageRectTransform.gameObject.SetActive(false);}void Update(){// 如果鼠标左键按下if (Input.GetMouseButtonDown(0)){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;// 射线检测是否点击到物体if (Physics.Raycast(ray, out hit)){GameObject selectedObject hit.collider.gameObject;// 判断是否点击到了我们想要拖拽的物体if (selectedObject.transform.name 3){uiImageRectTransform.gameObject.SetActive(true);// 开始拖拽// 将物体的世界坐标转换为Canvas内的局部坐标Vector2 localPos;RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, Camera.main.WorldToScreenPoint(selectedObject.transform.position), canvasCamera, out localPos);// 设置UI元素的位置为Canvas内的局部坐标localPos new Vector2(localPos.x - 249, localPos.y 70);uiImageRectTransform.localPosition localPos;lastSelectedObject selectedObject;Vector3 objectPosition selectedObject.transform.position;lastMousePosition Input.mousePosition;}else{// 隐藏UI元素uiImageRectTransform.gameObject.SetActive(false);}}isRotating true;// 检测物体是否不可见并隐藏UI元素if (lastSelectedObject ! null IsObjectInvisible(lastSelectedObject)){uiImageRectTransform.gameObject.SetActive(false);}}if (isRotating object3D ! null){// 获取当前鼠标位置和上一帧鼠标位置之间的差值Vector3 deltaMouse Input.mousePosition - lastMousePosition;// 根据差值来计算旋转角度float rotationSpeed 0.25f; // 调整旋转速度float rotationY deltaMouse.x * rotationSpeed;// 应用旋转object3D.transform.Rotate(Vector3.up, -rotationY, Space.World);// 更新上一帧鼠标位置lastMousePosition Input.mousePosition;if (uiImageRectTransform ! null){// uiImageRectTransform.GetComponentRectTransform().anchoredPosition new Vector2(uiImageRectTransform.GetComponentRectTransform().anchoredPosition.x deltaMouse.x, uiImageRectTransform.GetComponentRectTransform().anchoredPosition.y);// 将物体的世界坐标转换为屏幕坐标Vector2 screenPos RectTransformUtility.WorldToScreenPoint(null, uiImageRectTransform.position);// 将屏幕坐标转换为Canvas内的局部坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, screenPos, null, out Vector2 localPos);localPos new Vector2(localPos.x deltaMouse.x, localPos.y);// 设置物体的局部坐标uiImageRectTransform.anchoredPosition localPos;}}// 如果鼠标左键释放if (Input.GetMouseButtonUp(0)){isRotating false;}}// 检测物体是否不可见private bool IsObjectInvisible(GameObject obj){// 获取物体的包围盒Bounds bounds obj.GetComponentRenderer().bounds;// 获取摄像机的视锥体平面Plane[] frustumPlanes GeometryUtility.CalculateFrustumPlanes(Camera.main);// 检查包围盒是否与视锥体相交return !GeometryUtility.TestPlanesAABB(frustumPlanes, bounds);}// 检测物体是否被遮挡private bool IsObjectOccluded(GameObject obj){// 获取摄像机到物体的方向Vector3 directionToTarget obj.transform.position - Camera.main.transform.position;// 发射射线Ray ray new Ray(Camera.main.transform.position, directionToTarget);RaycastHit hit;// 射线检测是否有其他碰撞器位于射线路径上if (Physics.Raycast(ray, out hit, directionToTarget.magnitude)){// 如果射线击中的物体不是目标物体则表示目标物体被遮挡if (hit.collider.gameObject ! obj){return true;}}return false;} }重点 // 将物体的世界坐标转换为Canvas内的局部坐标Vector2 localPos;RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, Camera.main.WorldToScreenPoint(selectedObject.transform.position), canvasCamera, out localPos);// 设置UI元素的位置为Canvas内的局部坐标localPos new Vector2(localPos.x - 249, localPos.y 70);uiImageRectTransform.localPosition localPos;
http://wiki.neutronadmin.com/news/410947/

相关文章:

  • 做网站好还是阿里巴巴怎样制作网站和软件
  • cgi做网站如需郑州网站建设
  • 简单的购物网站项目wordpress 内置 函数大全
  • 常州网站seowordpress全站源码
  • 政务系统网站建设wordpress广告位插件哪个好
  • 商店名怎么显示在地图上seo排名优化软件
  • 坑梓网站建设哪家好中国新闻社招聘
  • 沈阳家用电梯公司网站制作网站建设公司那记号
  • h5游戏网站入口动漫制作专业学校
  • 做响应式网站的菜单郑州专业高校网站建设公司
  • 汕头网站建设模块雅布设计
  • 郑州企业网站排行wordpress资源付费
  • 网站出现 503怎么了社保服务个人网页
  • 网站建设 昆明 价格wordpress单号管理
  • 学校英文版网站建设佛山市南海区交通建设网站
  • 跟换网站域名辽宁省高等级公路建设局网站
  • 请人建设网站需要注意什么外贸建站用什么服务器
  • 威海 网站建设推广方式有哪几种
  • 设计素材网站黄金烤肠国家建筑网站
  • 自己做网站的优势丹徒网站建设哪家好
  • 建设网站的技术阿里云 网站备案
  • 备案的网站建设书是什么垂直 网站开发
  • 贵州城乡和住房建设厅网站建设一个商城网站大概多少钱
  • 建站好的公司青岛 正规网站空间
  • 给网站做镜像花钱做网站不给源代码
  • 深圳专业定制建站公司青岛永诚网络有限公司
  • 沈阳网站建设思路胶南市城乡建设局网站
  • 龙华民治网站建设中国建设银行行号查询
  • 邯郸企业网站制作建设青岛网站建设公司报价
  • ipv6网站建设东莞网站流量少怎么做