您现在的位置是:首页 >学无止境 >Unity搭建VR全景图网站首页学无止境
Unity搭建VR全景图
简介Unity搭建VR全景图
VR全景图片显示和相机旋转
**
如果需要内置面材质球文件,可以私信下我
**
场景构建
创建项目后拖进所需文件
文件有内置面材质球、图片等
创建文件
拖拽内置面材质球进入场景,并设置相机在球内部
再创建一个材质球,命名和图片相同
选择Shader为Unlit/Texture,再选择对应图片
拖拽材质球到内置面材质球上
效果
鼠标控制观看
相机旋转方法有
PC:鼠标控制、键盘输入控制
安卓端:陀螺仪、触屏
控制方法
创建脚本,并拖拽到相机身上
编写脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VR_Camera : MonoBehaviour
{
public Transform rig_Transform;
public Transform vr_Camera;
public float rotateSpeed = 180;
public float x_AngleLimit = 45;
public Vector3 angles;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void FixedUpdate()
{
CameraRotate();
}
void CameraRotate()
{
if (rig_Transform == null || vr_Camera == null) return;
if (Input.GetMouseButton(0))
{
float x_Offset = Input.GetAxis("Mouse X");//控制水平方向转动,rig_Transform世界Y轴转动
float y_Offset = Input.GetAxis("Mouse Y");//控制垂直方向转动,vr_Camera世界Y轴转动
rig_Transform.Rotate(x_Offset*Vector3.up * rotateSpeed * Time.fixedDeltaTime, Space.World);
vr_Camera.Rotate(y_Offset*Vector3.left * rotateSpeed * Time.fixedDeltaTime, Space.Self);
}
angles = vr_Camera.localEulerAngles;
if (angles.x < 180)
{
if (angles.x > x_AngleLimit)
{
vr_Camera.localRotation = Quaternion.Euler(new Vector3(x_AngleLimit, 0, 0));
}
}
if (angles.x > 180)
{
if (angles.x < 360-x_AngleLimit)
{
vr_Camera.localRotation = Quaternion.Euler(new Vector3(360-x_AngleLimit, 0, 0));
}
}
}
}
拖拽
选择角度限制
- 获取角度
angles = vr_Camera.localEulerAngles
;范围是0~360 - angles.x,获取Rig的x,x是0到360,但这里是localRotation是0~180
- 所以根据180作为平线,来进行区分上下
- 进行位置限制,y、z均为0,x保持当前位置不变
vr_Camera.localRotation = Quaternion.Euler(new Vector3(x_AngleLimit, 0, 0));
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。