上学期间在自学unity,最近需要做一个全景图的效果,鼠标拖动摄像机自旋转,网上查了很久终于找到http://blog.csdn.net/u010476348/article/details/68062257这位   @莫问夜雨  作者的代码,因为自己本身接触代码少,自己有不会写,就只能网上找各位大神了。现在将代码贴在下面。

因为全景图是 绕摄像机自己旋转所以……看下图,记得将架在场景中间的摄像机拖到图中位置。    当然你也可以让摄像机绕物体旋转,绕轴旋转。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;public class Test01 : MonoBehaviour
{public float moveSpeed = 1;//物体旋转速度    public GameObject target;private Vector2 oldPosition;private Vector2 oldPosition1;private Vector2 oldPosition2;private float distance = 0;private bool flag = false;//摄像头的位置  private float x = 0f;private float y = 0f;//左右滑动移动速度  public float xSpeed = 250f;public float ySpeed = 120f;//缩放限制系数  public float yMinLimit = -360;public float yMaxLimit = 360;//是否旋转  private bool isRotate = true;//计数器  private float count = 0;public static Test01 _instance;//初始化游戏信息设置  void Start(){_instance = this;Vector3 angles = transform.eulerAngles;x = angles.y;y = angles.x;if (GetComponent<Rigidbody>())GetComponent<Rigidbody>().freezeRotation = true;}// Update is called once per frame    void Update(){if (isRotate){target.transform.Rotate(Vector3.down, Time.deltaTime * moveSpeed, Space.World);}if (!isRotate){count += Time.deltaTime;if (count > 5){count = 0;isRotate = true;}}//触摸类型为移动触摸  if (Input.GetMouseButton(0)){//根据触摸点计算X与Y位置  x += Input.GetAxis("Mouse X") * xSpeed * Time.deltaTime;y -= Input.GetAxis("Mouse Y") * ySpeed * Time.deltaTime;isRotate = false;}//判断鼠标滑轮是否输入  float temp = Input.GetAxis("Mouse ScrollWheel");if (temp != 0){if (temp > 0){// 这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改  if (distance > -15){distance -= 0.5f;}}if (temp < 0){// 这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改  if (distance < 20){distance += 0.5f;}}}}//计算距离,判断放大还是缩小。放大返回true,缩小返回false    bool IsEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2){//old distance    float oldDistance = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));//new distance    float newDistance = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));if (oldDistance < newDistance){//zoom+    return true;}else{//zoom-    return false;}}//每帧执行,在Update后    void LateUpdate(){if (target){//重置摄像机的位置  y = ClampAngle(y, yMinLimit, yMaxLimit);var rotation = Quaternion.Euler(y, x, 0);var position = rotation * (new Vector3(0.0f, 0.0f, -distance)) + target.transform.position;transform.rotation = rotation;transform.position = position;}}float ClampAngle(float angle, float min, float max){if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);}}

Unity做360度全景预览,效果类似pano2vr导出的效果或720云做的效果相关推荐

  1. iOS开发,利用PanoramaGL生成360度全景预览图,附选择本地全景图片并生成全景预览...

    前言 初做全景项目,涉及到了360度全景展示(也可以是720度的旋转),查找了很多资料,很多都是用PanoramaGL这个库实现的,本人也踩了一下坑,下面我简单的总结一下. 初识PanoramaGL ...

  2. JS图片360度全景预览插件

    下载地址 通过令人惊叹的360视角吸引您的客户,让您的产品充满震撼.JS Cloudimage 360 View 是一种简单的交互式资源,可用于提供产品的虚拟浏览. dd:

  3. html实现360展示图片,js html5 360度全景图片预览效果

    特效描述:js html5 360度全景图片 预览效果.html5实现360度全景,html5 720度全景图,html5全景图,html5全景图源代码,html5 3d全景,360度全景图,3d36 ...

  4. js产品360度旋转预览图片插件

    下载地址 纯js实现的产品360度旋转预览图片插件.该js特效仅使用120行代码,即可实现通过滑块.或鼠标手动360度旋转图片,以及自动360度旋转图片的效果. dd:

  5. html5图片自动翻转,纯js实现360度旋转预览图片特效

    这是一款纯js实现360度旋转预览图片特效.该js特效仅使用120行代码,即可实现通过滑块.或鼠标手动360度旋转图片,以及自动360度旋转图片的效果. 使用方法 HTML结构 import Roll ...

  6. 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere

    1小时教你做360度全景"小星球"效果图 Skillshare – Create a Panoramic 'Little Planet' from Anywhere 1小时教你做3 ...

  7. Unity显示360度全景照片

    Unity显示360度全景,其实就是把全景图片贴到一个球上,只不过,这个球是从里往外看. 先把摄像机移动到坐标(0,0,0). 添加一个球体,坐标也是(0,0,0) 把全景图片拖到球体上, 这个时候, ...

  8. 【Unity VR开发窍门】如何在Unity中以VR视角捕捉游戏360度全景(三)

    [背景] 之前两篇帖子介绍了如何在Unity中捕捉360度全景,以及如何将CubeMap转换为平面2D对象.今天进一步来介绍一下,如何将2D全景对象存储为JPG或其它格式的图片文件. [思路] 要将只 ...

  9. 使用Vue3实现360度全景效果

    全景展示是一种很炫酷的效果,能够带给用户身临其境的感觉,特别是在旅游.房产等行业非常实用.本文将介绍如何使用Vue3来实现360度全景效果. 步骤一:安装相关依赖 首先,我们需要安装两个库:panne ...

最新文章

  1. 【超详细】手把手教你使用YOLOX进行物体检测(附数据集)
  2. 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法)
  3. 用计算机写文章教学课件,计算机教学课件
  4. SQLServer 清空某个库所有表
  5. python argvparser_Python ArgumentParse的subparser用法说明
  6. 谷歌浏览器安卓_用谷歌服务更安全了,安卓手机可充当物理安全密匙
  7. [LeetCode] Sum of Left Leaves 左子叶之和
  8. linxu命令个人使用总结
  9. Android开发,并不见得是一个走得长远的路子
  10. public class c中_C++中如何使用类模板
  11. java、sftp文件服务器的操作(获取链接。上传、下载,删除,获取图片或者文件)
  12. 黑黛增发罗林川:如何三年开1000家连锁店?_深度案例_i黑马
  13. 计算机的处理器怎么看,小编教你电脑处理器怎么查看
  14. 压缩卷时可压缩空间远小于实际剩余空间解决方法
  15. 小游戏——打鱼还是晒网
  16. 网上值机软件测试,值机员考试(B)题
  17. 已安装nvidia 显卡驱动时,cuda 安装
  18. 离散数学(8)——函数
  19. 打印乘法口诀表(两种方法)
  20. Hexo博客备份方案

热门文章

  1. vs2017开发ActiveX(主讲OCX)(十)、手动添加自定义方法
  2. TCP/IP网络编程(一)
  3. JavaScript设计模式有哪些?
  4. Java、JSP网上教务评教管理系统(教学评价系统)
  5. 谁说QTP不能多线程 - 当Python遇上QTP
  6. 1062lcd在dxp哪个库_Protel DXP 自带常用元件库路径
  7. 封条格式用word怎么打_怎么用word制作封条
  8. python利用numpy模块读取csv文件
  9. 五连阳回调买入法_百战百胜选股指标-月盈利40%以上,史上最全分时图买卖战法。...
  10. SQL*Loader总结sqlldr