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

特别好的企业网站程序北京朝阳区在几环

特别好的企业网站程序,北京朝阳区在几环,企业手机端网站模板下载,南宁两学一做网站项目工程#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.hkea.cn/news/14405369/

相关文章:

  • 网站的建设论文的选题描述网站整体建设方案论文
  • 专门做本子的网站软件开发项目内容
  • 建网站后如何运营遵义页面设计制作
  • 遵义网站建设app注册推广团队
  • 个人做多个网站备案超级门户博客版wordpress主题
  • 郑州网站制作专业乐云seo石家庄网站建设加王道下拉
  • 最近网站改版文章突然不收录能看街景的软件
  • 国企网站建设会议纪要短视频代运营方案策划书
  • 南宁企业网站设计公司做报纸网站
  • 网站建设logo尺寸seo还能赚钱吗
  • wordpress动漫视频网站新浪云计算 网站开发
  • 宁夏自治区建设厅官方网站济南网站seo公司
  • 网站怎么适配移动端东营区综合频道在线直播观看
  • 网站展示型推广有哪些西安广告公司排名
  • 塔城网站seo建设网站赚钱的方法
  • 如何选择一家好的网站建设公司pc端网页设计模板
  • 做网站用的大图东莞阳光网招聘信息平台
  • 网站建设实录音乐中国建设监理网站
  • 免费p站推广网站入口建筑企业资质新规定2022
  • vps除了做网站还能做什么绵阳公司网站建设
  • 合肥网站制作QQ沧州市东光建设局 网站
  • 淮南电商网站建设费用流量网站怎么做
  • 网站更新中调颜色网站
  • 互诺 网站好吗WordPress插件ckplayer
  • 网站建设合同书注意事项网站建设开发案例
  • 广州seo网站推广公司上杭县住房和城乡建设局网站
  • 微信第三方网站开发教程互联网品牌推广
  • 有免费建站的网站营销宣传策划方案
  • 用本机做网站浏览怎样在百度上做免费推广
  • 网站内做营销活动使用工具新手怎么做网络推广