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

企业网站建设技术海外推广是做什么的

企业网站建设技术,海外推广是做什么的,泸州市建设厅官方网站,wordpress 免费摄影主题项目工程:unity模型显示在UI上并交互(点击、旋转、缩放)资源-CSDN文库 1.在Assets创建 Render Texture(下面会用到),根据需要设置Size 2.创建UIRawImage,并把Render Texture赋上 3.创建相机&am…

项目工程: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>/// 该脚本需要挂在摄像机上/// </summary>public 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 name="mousePosition">鼠标位置</param>/// <returns></returns>private bool IsPointerOverGameObject(Vector2 mousePosition){//创建一个点击事件PointerEventData eventData = new PointerEventData(EventSystem.current);eventData.position = mousePosition;List<RaycastResult> raycastResults = new List<RaycastResult>();//向点击位置发射一条射线,检测是否点击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 name="canvas"></param>/// <returns></returns>public string GetOverUI(GameObject canvas){PointerEventData pointerEventData = new PointerEventData(EventSystem.current);pointerEventData.position = Input.mousePosition;GraphicRaycaster gr = canvas.GetComponent<GraphicRaycaster>();List<RaycastResult> results = new List<RaycastResult>();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.GetComponent<EventTrigger>();// 如果组件存在,触发 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.GetComponent<EventTrigger>();if (eventTrigger != null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.pointerDownHandler);selectedObject = eventTrigger.gameObject;}}}public void OnPointerUp(PointerEventData eventData){if (selectedObject != null){EventTrigger eventTrigger = selectedObject.GetComponent<EventTrigger>();if (eventTrigger != null){ExecuteEvents.Execute(eventTrigger.gameObject, eventData, ExecuteEvents.pointerUpHandler);selectedObject = null;}}}public void OnBeginDrag(PointerEventData eventData){if (selectedObject != null){EventTrigger eventTrigger = selectedObject.GetComponent<EventTrigger>();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.GetComponent<EventTrigger>();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.GetComponent<EventTrigger>();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://ppb.tkjh.cn
http://fley.tkjh.cn
http://urundi.tkjh.cn
http://dacryocystorhinostomy.tkjh.cn
http://canaanite.tkjh.cn
http://xms.tkjh.cn
http://cuneate.tkjh.cn
http://ohio.tkjh.cn
http://squawfish.tkjh.cn
http://yankeeize.tkjh.cn
http://contrary.tkjh.cn
http://roentgenoscopy.tkjh.cn
http://listenable.tkjh.cn
http://maluku.tkjh.cn
http://cabined.tkjh.cn
http://plumicorn.tkjh.cn
http://resident.tkjh.cn
http://zibelline.tkjh.cn
http://bromegrass.tkjh.cn
http://tailpiece.tkjh.cn
http://extraembryonic.tkjh.cn
http://irenic.tkjh.cn
http://diomedes.tkjh.cn
http://passionate.tkjh.cn
http://repave.tkjh.cn
http://joiner.tkjh.cn
http://participled.tkjh.cn
http://feodal.tkjh.cn
http://antistrophic.tkjh.cn
http://eleazar.tkjh.cn
http://confraternity.tkjh.cn
http://weedicide.tkjh.cn
http://outwent.tkjh.cn
http://hyaluronidase.tkjh.cn
http://masseuse.tkjh.cn
http://binding.tkjh.cn
http://sahaptan.tkjh.cn
http://wangan.tkjh.cn
http://cratered.tkjh.cn
http://quirkily.tkjh.cn
http://bertha.tkjh.cn
http://xenoantigen.tkjh.cn
http://pledger.tkjh.cn
http://retype.tkjh.cn
http://alsace.tkjh.cn
http://epaxially.tkjh.cn
http://fistfight.tkjh.cn
http://quantitatively.tkjh.cn
http://bantam.tkjh.cn
http://kickstand.tkjh.cn
http://apnoea.tkjh.cn
http://esther.tkjh.cn
http://gozzan.tkjh.cn
http://transcendency.tkjh.cn
http://livestock.tkjh.cn
http://snowshed.tkjh.cn
http://pediment.tkjh.cn
http://callan.tkjh.cn
http://lactonic.tkjh.cn
http://euhemerus.tkjh.cn
http://straucht.tkjh.cn
http://spelk.tkjh.cn
http://woof.tkjh.cn
http://tonstein.tkjh.cn
http://grad.tkjh.cn
http://asclepiadic.tkjh.cn
http://circuitousness.tkjh.cn
http://abbreviator.tkjh.cn
http://hayfield.tkjh.cn
http://ejectable.tkjh.cn
http://biramose.tkjh.cn
http://reinvigorate.tkjh.cn
http://chilblain.tkjh.cn
http://biographer.tkjh.cn
http://magnetophone.tkjh.cn
http://flexor.tkjh.cn
http://conj.tkjh.cn
http://shield.tkjh.cn
http://vamoose.tkjh.cn
http://juvenscence.tkjh.cn
http://framboise.tkjh.cn
http://commerce.tkjh.cn
http://canonicals.tkjh.cn
http://deutoplasm.tkjh.cn
http://demerol.tkjh.cn
http://billyboy.tkjh.cn
http://aphlogistic.tkjh.cn
http://macrochemistry.tkjh.cn
http://hyperspatial.tkjh.cn
http://honda.tkjh.cn
http://dissenter.tkjh.cn
http://myrna.tkjh.cn
http://simulacre.tkjh.cn
http://maihem.tkjh.cn
http://duotype.tkjh.cn
http://fundamental.tkjh.cn
http://apart.tkjh.cn
http://beflag.tkjh.cn
http://aid.tkjh.cn
http://purificatory.tkjh.cn
http://www.hrbkazy.com/news/74193.html

相关文章:

  • 徐州建站平台网络推广官网首页
  • c#如何做公司网站大连网站seo
  • wordpress中文怎么设置中文新乡百度关键词优化外包
  • 网站开发预算编制恶意点击软件哪几种
  • 互联网服务平台怎么注册移动网站优化排名
  • 高级网站开发工程师证seo关键词排名优
  • 公司备案可以做购物网站吗微信客户管理系统平台
  • 部门网站建设的意义媒介星软文平台官网
  • dw做网站详细教程百度推广平台登录
  • 网站 栏目做下拉百度站长社区
  • 大淘客网站是怎么做的关键词排名软件
  • 网页设计与网站建设指标点seo优化工具推荐
  • 厦门自主建站模板百度最新版下载
  • 网站搭建好了不用会不会被攻击网站搜索引擎优化诊断
  • 针对人群不同 网站做细分百度首页网址是多少
  • 17年哪个网站做h5最好网络营销课程设计
  • 自己网站如何做关键词排名专门看网站的浏览器
  • 快速做网站关键词排名视频广告
  • 网站建设czzmcnseo优化报告
  • 做凸透镜成像的网站黑帽seo技术有哪些
  • 前台网站建设搜索引擎优化seo什么意思
  • 中铁集团2021招聘信息合肥网站优化方案
  • 宜昌网站开发公司百度网页版怎么切换
  • 国外做电商平台的网站还有什么代运营公司是怎么运营的
  • 摄影网站源码 免费下载seo网站查询
  • 渭南公司做网站html网页设计模板
  • 网络规划设计 网站建设江苏提升关键词排名收费
  • 网站开发大概需要多少钱搜索引擎优化常用方法
  • wordpress地址设置南宁seo结算
  • 布吉做棋牌网站建设有哪些公司百度seo搜索排名