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

坪山做网站公司杭州哪家公司网站做的好

坪山做网站公司,杭州哪家公司网站做的好,网站关键词排名,app加网站开发项目工程#xff1a;unity模型显示在UI上并交互#xff08;点击、旋转、缩放#xff09;资源-CSDN文库 1.在Assets创建 Render Texture#xff08;下面会用到#xff09;#xff0c;根据需要设置Size 2.创建UIRawImage#xff0c;并把Render Texture赋上 3.创建相机unity模型显示在UI上并交互点击、旋转、缩放资源-CSDN文库 1.在Assets创建 Render Texture下面会用到根据需要设置Size 2.创建UIRawImage并把Render Texture赋上 3.创建相机如下图 4.基本UI的准备工作完成剩下的就是代码了值得一提相机我不喜欢单独拿出去管理就和UI一起就好。如图 5.相机控制直接上代码添加了一个判断鼠标必须在rawImage上其他UI上无效 /**********************************************************************文件信息文件名(File Name): CameraController.cs作者(Author): TianWenQuan创建时间(CreateTime): #CREATETIME#Unity版本(UnityVersion) #UNITYVERSION#项目**********************************************************************/ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; namespace Twq {/// summary/// 该脚本需要挂在摄像机上/// /summarypublic class CameraController : MonoBehaviour{public Transform targetObject;public Vector3 targetOffset;public float averageDistance 5.0f;//初始位置 镜头远近public float maxDistance 20;public float minDistance .6f;public float xSpeed 200.0f;public float ySpeed 200.0f;public int yMinLimit -80;public int yMaxLimit 80;public int xMinLimit -80;public int xMaxLimit 80;public int zoomSpeed 40;public float panSpeed 0.3f;public float zoomDampening 5.0f;public float rotateOnOff 1;private float xDeg 0.0f;private float yDeg 0.0f;private float currentDistance;private float desiredDistance;private Quaternion currentRotation;private Quaternion desiredRotation;private Quaternion rotation;private Vector3 position;private float idleTimer 0.0f;private float idleSmooth 0.0f;void Start() { Init(); }void OnEnable() { Init(); }public void Init(){tt();}public void tt(){if (!targetObject){GameObject go new GameObject(Cam Target);go.transform.position transform.position (transform.forward * averageDistance);targetObject go.transform;}currentDistance averageDistance;desiredDistance averageDistance;position transform.position;rotation transform.rotation;currentRotation transform.rotation;desiredRotation transform.rotation;xDeg Vector3.Angle(Vector3.right, transform.right);yDeg Vector3.Angle(Vector3.up, transform.up);position targetObject.position - (rotation * Vector3.forward * currentDistance targetOffset);}void LateUpdate(){if (IsPointerOverGameObject(Input.mousePosition)){if (Input.GetMouseButton(2) Input.GetKey(KeyCode.LeftAlt) Input.GetKey(KeyCode.LeftControl)){desiredDistance - Input.GetAxis(Mouse Y) * 0.02f * zoomSpeed * 0.125f * Mathf.Abs(desiredDistance);}else if (Input.GetMouseButton(0)){xDeg Input.GetAxis(Mouse X) * xSpeed * 0.02f;yDeg - Input.GetAxis(Mouse Y) * ySpeed * 0.02f;yDeg ClampAngle(yDeg, yMinLimit, yMaxLimit);xDeg ClampAngle(xDeg, xMinLimit, xMaxLimit);desiredRotation Quaternion.Euler(yDeg, xDeg, 0);currentRotation transform.rotation;rotation Quaternion.Lerp(currentRotation, desiredRotation, 0.02f * zoomDampening);transform.rotation rotation;idleTimer 0;idleSmooth 0;}else{//自动旋转//idleTimer 0.02f;//if (idleTimer rotateOnOff rotateOnOff 0)//{// idleSmooth (0.02f idleSmooth) * 0.005f;// idleSmooth Mathf.Clamp(idleSmooth, 0, 1);// xDeg xSpeed * 0.001f * idleSmooth;//}//yDeg ClampAngle(yDeg, yMinLimit, yMaxLimit);//desiredRotation Quaternion.Euler(yDeg, xDeg, 0);//currentRotation transform.rotation;//rotation Quaternion.Lerp(currentRotation, desiredRotation, 0.02f * zoomDampening * 2);//transform.rotation rotation;}desiredDistance - Input.GetAxis(Mouse ScrollWheel) * 0.02f * zoomSpeed * Mathf.Abs(desiredDistance);desiredDistance Mathf.Clamp(desiredDistance, minDistance, maxDistance);currentDistance Mathf.Lerp(currentDistance, desiredDistance, 0.02f * zoomDampening);position targetObject.position - (rotation * Vector3.forward * currentDistance targetOffset);transform.position position;}}private static float ClampAngle(float angle, float min, float max){if (angle -360)angle 360;if (angle 360)angle - 360;return Mathf.Clamp(angle, min, max);}/// summary/// 检测是否点击UI/// /summary/// param namemousePosition鼠标位置/param/// returns/returnsprivate bool IsPointerOverGameObject(Vector2 mousePosition){//创建一个点击事件PointerEventData eventData new PointerEventData(EventSystem.current);eventData.position mousePosition;ListRaycastResult raycastResults new ListRaycastResult();//向点击位置发射一条射线检测是否点击UIEventSystem.current.RaycastAll(eventData, raycastResults);if (raycastResults.Count 0){// Debug.Log(raycastResults[0].gameObject.name raycastResults[0].gameObject.name);if (raycastResults[0].gameObject.name RawImage)//判断是否 是 自己要点击的UI{return true;}else{return false;}}else{return false;}}/// summary/// 获取鼠标停留处UI/// /summary/// param namecanvas/param/// returns/returnspublic string GetOverUI(GameObject canvas){PointerEventData pointerEventData new PointerEventData(EventSystem.current);pointerEventData.position Input.mousePosition;GraphicRaycaster gr canvas.GetComponentGraphicRaycaster();ListRaycastResult results new ListRaycastResult();gr.Raycast(pointerEventData, results);if (results.Count ! 0){Debug.Log();return results[0].gameObject.name;}return null;}} } 6.鼠标点击 模型 触发事件 using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;namespace App.UI.Event {public class RaycastFromMouse : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IDragHandler, IBeginDragHandler, IEndDragHandler{public Camera renderCamera;public RawImage rawImage;public void OnPointerClick(PointerEventData eventData){// 获取鼠标点击位置Vector2 clickPosition eventData.position;// 将屏幕坐标转换为 RawImage 的本地坐标Vector2 localPoint;RectTransformUtility.ScreenPointToLocalPointInRectangle(rawImage.rectTransform, clickPosition, eventData.pressEventCamera, out localPoint);// 将 RawImage 的本地坐标映射到 RenderTexture 的分辨率范围内Rect rect rawImage.rectTransform.rect;Vector2 normalizedPoint new Vector2((localPoint.x - rect.x) / rect.width, (localPoint.y - rect.y) / rect.height);// 将转换后的坐标转换为射线Ray ray renderCamera.ViewportPointToRay(normalizedPoint);// 发射射线检测是否与3D模型交互RaycastHit hit;if (Physics.Raycast(ray, out hit)){// 获取物体上的 EventTrigger 组件EventTrigger eventTrigger hit.collider.gameObject.GetComponentEventTrigger();// 如果组件存在触发 Pointer Click 事件if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.pointerClickHandler);}}}private GameObject selectedObject;public void OnPointerDown(PointerEventData eventData){RaycastHit hit;if (RaycastToRenderTexture(eventData, out hit)){EventTrigger eventTrigger hit.collider.gameObject.GetComponentEventTrigger();if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.pointerDownHandler);selectedObject eventTrigger.gameObject;}}}public void OnPointerUp(PointerEventData eventData){if (selectedObject ! null){EventTrigger eventTrigger selectedObject.GetComponentEventTrigger();if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.pointerUpHandler);selectedObject null;}}}public void OnBeginDrag(PointerEventData eventData){if (selectedObject ! null){EventTrigger eventTrigger selectedObject.GetComponentEventTrigger();if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.beginDragHandler);}}GlobalEvent.Dispatch(UIExecuteEvent.OnBeginDragEvent, eventData);}public void OnDrag(PointerEventData eventData){if (selectedObject ! null){EventTrigger eventTrigger selectedObject.GetComponentEventTrigger();if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.dragHandler);}}GlobalEvent.Dispatch(UIExecuteEvent.OnDragEvent, eventData);}public void OnEndDrag(PointerEventData eventData){if (selectedObject ! null){EventTrigger eventTrigger selectedObject.GetComponentEventTrigger();if (eventTrigger ! null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.endDragHandler);}}GlobalEvent.Dispatch(UIExecuteEvent.OnEndDragEvent, eventData);}private bool RaycastToRenderTexture(PointerEventData eventData, out RaycastHit hit){Vector2 clickPosition eventData.position;Vector2 localPoint;RectTransformUtility.ScreenPointToLocalPointInRectangle(rawImage.rectTransform, clickPosition, eventData.pressEventCamera, out localPoint);Rect rect rawImage.rectTransform.rect;Vector2 normalizedPoint new Vector2((localPoint.x - rect.x) / rect.width, (localPoint.y - rect.y) / rect.height);Ray ray renderCamera.ViewportPointToRay(normalizedPoint);return Physics.Raycast(ray, out hit);}} }
http://www.tj-hxxt.cn/news/140848.html

相关文章:

  • 做营销网站那个好品牌营销策略包括哪些内容
  • 中卫网站推广软件wordpress如何开启ssl
  • 专业定制网站开发自己在哪里做网站
  • 路由侠怎么做网站映射网站制作公司浩森宇特
  • 本溪建网站网站建设常州青之峰
  • 破解织梦做的网站做网站都需要什么人团
  • 南阳免费网站建设关系建设的网站
  • 怎么用代码做网站wordpress目录
  • 物流网站建设评析中济建设有限公司网站
  • 网站 优化 关键字seo关键词排名优化哪家好
  • 免费企业自助建站信息发布网发布网页
  • 怎么增加网站浏览量新手怎样在手机上做电商
  • 福州做推广有哪些网站上海seo服务外包公司
  • 永州做网站网站建设需要什么资质
  • 郑州模板建站哪家好工作报告是组织进行沟通的有效渠道
  • 镇江seo网站优化做电商网站搭建就业岗位
  • 云服务器建立多个网站合肥论坛网
  • 公司网站空间申请网站建设 地址: 上海石门二路
  • 晨旭东方网站建设wordpress 9gag主题
  • 企业网站建设ppt模板泸州网站建设
  • 电脑做服务器发布网站网站怎样做漂浮
  • 浙江省建设监理协会网站网片加工机器
  • 南昌网站建设700起手机企业网站程序
  • 网站制作的预算浏阳市住房和城乡建设局的网站
  • 北京经济技术开发区建设局网站温州网站制作策划
  • 营销型网站建设明细软件开发报价明细
  • 成都私人网站制作公司西安网站建设 招聘
  • 广西柳州网站制作公司h5个网站的区别
  • 彩票网站开发软件中国建设银行巴黎分行网站
  • wap网站开发语言临沂网站建设铭镇