Unity做360度全景预览,效果类似pano2vr导出的效果或720云做的效果
上学期间在自学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云做的效果相关推荐
- iOS开发,利用PanoramaGL生成360度全景预览图,附选择本地全景图片并生成全景预览...
前言 初做全景项目,涉及到了360度全景展示(也可以是720度的旋转),查找了很多资料,很多都是用PanoramaGL这个库实现的,本人也踩了一下坑,下面我简单的总结一下. 初识PanoramaGL ...
- JS图片360度全景预览插件
下载地址 通过令人惊叹的360视角吸引您的客户,让您的产品充满震撼.JS Cloudimage 360 View 是一种简单的交互式资源,可用于提供产品的虚拟浏览. dd:
- html实现360展示图片,js html5 360度全景图片预览效果
特效描述:js html5 360度全景图片 预览效果.html5实现360度全景,html5 720度全景图,html5全景图,html5全景图源代码,html5 3d全景,360度全景图,3d36 ...
- js产品360度旋转预览图片插件
下载地址 纯js实现的产品360度旋转预览图片插件.该js特效仅使用120行代码,即可实现通过滑块.或鼠标手动360度旋转图片,以及自动360度旋转图片的效果. dd:
- html5图片自动翻转,纯js实现360度旋转预览图片特效
这是一款纯js实现360度旋转预览图片特效.该js特效仅使用120行代码,即可实现通过滑块.或鼠标手动360度旋转图片,以及自动360度旋转图片的效果. 使用方法 HTML结构 import Roll ...
- 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere
1小时教你做360度全景"小星球"效果图 Skillshare – Create a Panoramic 'Little Planet' from Anywhere 1小时教你做3 ...
- Unity显示360度全景照片
Unity显示360度全景,其实就是把全景图片贴到一个球上,只不过,这个球是从里往外看. 先把摄像机移动到坐标(0,0,0). 添加一个球体,坐标也是(0,0,0) 把全景图片拖到球体上, 这个时候, ...
- 【Unity VR开发窍门】如何在Unity中以VR视角捕捉游戏360度全景(三)
[背景] 之前两篇帖子介绍了如何在Unity中捕捉360度全景,以及如何将CubeMap转换为平面2D对象.今天进一步来介绍一下,如何将2D全景对象存储为JPG或其它格式的图片文件. [思路] 要将只 ...
- 使用Vue3实现360度全景效果
全景展示是一种很炫酷的效果,能够带给用户身临其境的感觉,特别是在旅游.房产等行业非常实用.本文将介绍如何使用Vue3来实现360度全景效果. 步骤一:安装相关依赖 首先,我们需要安装两个库:panne ...
最新文章
- 【超详细】手把手教你使用YOLOX进行物体检测(附数据集)
- 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法)
- 用计算机写文章教学课件,计算机教学课件
- SQLServer 清空某个库所有表
- python argvparser_Python ArgumentParse的subparser用法说明
- 谷歌浏览器安卓_用谷歌服务更安全了,安卓手机可充当物理安全密匙
- [LeetCode] Sum of Left Leaves 左子叶之和
- linxu命令个人使用总结
- Android开发,并不见得是一个走得长远的路子
- public class c中_C++中如何使用类模板
- java、sftp文件服务器的操作(获取链接。上传、下载,删除,获取图片或者文件)
- 黑黛增发罗林川:如何三年开1000家连锁店?_深度案例_i黑马
- 计算机的处理器怎么看,小编教你电脑处理器怎么查看
- 压缩卷时可压缩空间远小于实际剩余空间解决方法
- 小游戏——打鱼还是晒网
- 网上值机软件测试,值机员考试(B)题
- 已安装nvidia 显卡驱动时,cuda 安装
- 离散数学(8)——函数
- 打印乘法口诀表(两种方法)
- Hexo博客备份方案
热门文章
- vs2017开发ActiveX(主讲OCX)(十)、手动添加自定义方法
- TCP/IP网络编程(一)
- JavaScript设计模式有哪些?
- Java、JSP网上教务评教管理系统(教学评价系统)
- 谁说QTP不能多线程 - 当Python遇上QTP
- 1062lcd在dxp哪个库_Protel DXP 自带常用元件库路径
- 封条格式用word怎么打_怎么用word制作封条
- python利用numpy模块读取csv文件
- 五连阳回调买入法_百战百胜选股指标-月盈利40%以上,史上最全分时图买卖战法。...
- SQL*Loader总结sqlldr