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

宿州房地产网站建设/上海广告推广

宿州房地产网站建设,上海广告推广,百度做网站搜索靠前,新疆建设兵团组织部网站鼠标滚轮:缩放 鼠标右键:旋转 鼠标中键:平移 鼠标左键:选中实体(下面的代码中未实现) 注: 1.地形必须在Terrain图层下 2.相机上必须挂载RigidbodyCollider,防止钻到地下。 Rig…

鼠标滚轮:缩放

鼠标右键:旋转

鼠标中键:平移

鼠标左键:选中实体(下面的代码中未实现)

注:

1.地形必须在Terrain图层下

2.相机上必须挂载Rigidbody+Collider,防止钻到地下。

 Rigidbody的Interpolate:Interpolate

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class Viewer : MonoBehaviour
{public Texture2D RotateIcon;public Texture2D PanIcon;public Rigidbody rigibodyCamera;public bool IsRecoverCameraForword = false;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//鼠标是否在UI上if (EventSystem.current != null && EventSystem.current.IsPointerOverGameObject()){return;}//旋转视角if (Input.GetMouseButtonDown(1)){Cursor.SetCursor(RotateIcon, Vector3.zero, CursorMode.Auto);}if (Input.GetMouseButtonUp(1)){Cursor.SetCursor(null, Vector3.zero, CursorMode.Auto);}if (Input.GetMouseButton(1)){Vector3 ptCenter = rigibodyCamera.transform.position - rigibodyCamera.transform.forward * 0.1f;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;LayerMask mask = 1 << (LayerMask.NameToLayer("Terrain"));//鼠标点在地面上,以鼠标点为旋转中心if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask.value)){ptCenter = hitInfo.point;float dist = Vector3.Distance(ptCenter, rigibodyCamera.transform.position);float axis_x = Input.GetAxis("Mouse X");float axis_y = Input.GetAxis("Mouse Y");float radius = 10.0f * dist;//防止相机钻到地面下radius = GetMoveableRadius(radius);if (Mathf.Abs(axis_x) > Mathf.Abs(axis_y)){float drag_x_speed = Mathf.Rad2Deg * (radius / dist);float rotX = axis_x * drag_x_speed * Time.deltaTime;rigibodyCamera.transform.RotateAround(ptCenter, Vector3.up, rotX);}else{float drag_y_speed = Mathf.Rad2Deg * (radius / dist);float rotY = axis_y * drag_y_speed * Time.deltaTime;rigibodyCamera.transform.RotateAround(ptCenter, -rigibodyCamera.transform.right, rotY);}}//鼠标没点在地面上,自由旋转else{float axis_x = Input.GetAxis("Mouse X");float axis_y = Input.GetAxis("Mouse Y");if (Mathf.Abs(axis_x) > Mathf.Abs(axis_y)){float drag_x_speed = 50.0f;float rotX = axis_x * drag_x_speed * Time.deltaTime;rigibodyCamera.transform.RotateAround(ptCenter, Vector3.up, rotX);}else{float drag_y_speed = 30.0f;float rotY = axis_y * drag_y_speed * Time.deltaTime;rigibodyCamera.transform.RotateAround(ptCenter, -rigibodyCamera.transform.right, rotY);}}}//放大if (Input.GetAxis("Mouse ScrollWheel") > 0){   float speed = 50.0f;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;LayerMask mask = 1 << (LayerMask.NameToLayer("Terrain"));if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask.value)){speed = 0.25f * Vector3.Distance(hitInfo.point, ray.origin);}//防止相机钻到地面下speed = GetMoveableRadius(speed);//相机往鼠标点的地方移动Ray ray2 = Camera.main.ScreenPointToRay(Input.mousePosition);rigibodyCamera.MovePosition(rigibodyCamera.position + ray2.direction * speed);}//缩小if (Input.GetAxis("Mouse ScrollWheel") < 0){float speed = 50.0f;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;LayerMask mask = 1 << (LayerMask.NameToLayer("Terrain"));if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask.value)){speed = 0.5f * Vector3.Distance(hitInfo.point, ray.origin);}//防止相机钻到地面下speed = GetMoveableRadius(speed);//相机往鼠标点的地方反方向移动Ray ray2 = Camera.main.ScreenPointToRay(Input.mousePosition);rigibodyCamera.MovePosition(rigibodyCamera.position - ray2.direction * speed);if(IsRecoverCameraForword){RecoverCameraForword();}            }//鼠标左键操作 if (Input.GetMouseButtonDown(2)){Cursor.SetCursor(PanIcon, Vector3.zero, CursorMode.Auto);}if (Input.GetMouseButtonUp(2)){Cursor.SetCursor(null, Vector3.zero, CursorMode.Auto);}if (Input.GetMouseButton(2)){float speed = 20.0f;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hitInfo;LayerMask mask = 1 << (LayerMask.NameToLayer("Terrain"));if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask.value)){speed = 0.05f * Vector3.Distance(hitInfo.point, ray.origin);}speed = GetMoveableRadius(speed);float x_mouse = -Input.GetAxis("Mouse X");float y_mouse = -Input.GetAxis("Mouse Y");float angle = Vector3.Angle(Camera.main.transform.forward, Vector3.down);if(angle < 5){Vector3 vecTemp = Vector3.zero;vecTemp += speed * x_mouse * Camera.main.transform.right;vecTemp += 0.4f * speed * y_mouse * Camera.main.transform.up;//防止相机钻到地面下float len = GetMoveableRadius(vecTemp.magnitude);rigibodyCamera.MovePosition(rigibodyCamera.position + vecTemp.normalized * len);}else{Vector3 vecTemp = Vector3.zero;Vector3 dir = Vector3.ProjectOnPlane(Camera.main.transform.forward, Vector3.up);vecTemp += speed * x_mouse * Camera.main.transform.right;vecTemp += speed * y_mouse * dir.normalized;//防止相机钻到地面下float len = GetMoveableRadius(vecTemp.magnitude);rigibodyCamera.MovePosition(rigibodyCamera.position + vecTemp.normalized * len);}}}//计算可移动距离private float GetMoveableRadius(float radius){int i = 0;while (true){i++;if (i > 50){radius = 0.0f;break;}if (IsHaveCollider(Camera.main.transform.position, radius)){radius = 0.5f * radius;}else{break;}}return radius;}//判断某个点,一定距离内有无碰撞物,-1为小于最小距离,0为位于两个距离内,1为大于最大距离bool IsHaveCollider(Vector3 ptCenter, float radius1){Collider[] collider1 = Physics.OverlapSphere(ptCenter, radius1);if (collider1.Length > 1){return true;}return false;}//慢慢将相机朝下void RecoverCameraForword(){Quaternion lodRotatiton = rigibodyCamera.transform.rotation;lodRotatiton.SetLookRotation(Vector3.down, Vector3.forward);Quaternion rot = Quaternion.Lerp(rigibodyCamera.transform.rotation, lodRotatiton, 0.08f);rigibodyCamera.MoveRotation(rot);}
}

http://www.lbrq.cn/news/1047907.html

相关文章:

  • 密云做网站/百度快速排名软件
  • 西安网站制作顶/宜昌网站建设公司
  • 装饰网站建设效果图/上海做seo的公司
  • 做网站软件html css/西安做网站的公司
  • 网站合同建设模板/如何做网络推广运营
  • 便宜做网站公司/网络推广app是干什么的
  • 北京企业响应式网站建设/重庆seo主管
  • 重庆做网站建设公司哪家好/营销型外贸网站建设
  • 深圳品牌设计公司介绍/东莞seo优化案例
  • 佛山做网站公司有哪些/最新热点新闻事件素材
  • 太原网站开发模板/上海app定制开发公司
  • 网站内容怎么做备份/百度论坛
  • 做外贸需关注的网站/网络销售怎么干
  • vue.js做网站/刷外链工具
  • 汕头网站排名优化/电子商务网站建设多少钱
  • 盐城市住房和城乡建设局门户网站/关键词检测
  • 初学者做网站的软件/国内高清视频素材网站推荐
  • 帮别人做违法网站会判刑吗/做网站用什么软件好
  • 网站建设网络公司/什么公司适合做seo优化
  • 网站建设项目风险管理的主要内容/做一个简单的网站需要多少钱
  • 怎样利用网站做淘宝客/网站关键词seo费用
  • 郑州网站制作天强科技/亚马逊关键词排名提升
  • 谷歌平台推广/厦门百度关键词优化
  • 兼职开发网站开发/网络营销的目的是
  • (小企制作)自制/互联网关键词优化
  • 集团网站建设方案/哈尔滨百度搜索排名优化
  • 广州哪家网站建设最好/国内专业seo公司
  • 邢台网站制作哪里有/关键词查询的分析网站
  • 连云港网站关键词优化/成都网站seo
  • 怎样做编辑发到网站/关键词排名查询官网
  • SpringSecurity过滤器链全解析
  • 新手小白使用jQuery在实际开发中常用到的经验
  • IDEA快捷键壁纸分享
  • 创业者焦虑与转型决策分析
  • 知识图谱【2】
  • QT5.15 mingw