本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6555188.html

最近在做一款VR项目,有一个查看功能,分为自由查看和跟随查看。

自由查看:

第一人称自由控制查看。使用firstPersonControl即可。

跟随查看:

摄像机可自由旋转并跟随查看的物体移动(摄像机不可为子物体)。

刚开始使用固定坐标的方法,但摄像机无法自由旋转。后来换用rotatearound,可以自由旋转,可一旦物体移动,旋转半径会拉大。

最后,模仿手势插件写了一个方法,代码如下:

 public Transform target;

     public float minDistance = 1.5f;
public float maxDistance = 10.0f; public float yawSensitivity =30f;
public float pinchSensitivity = 5.0f; public float smoothZoomSpeed = 30.0f;
public float smoothOrbitSpeed = 10.0f; float distance = 5.0f;
float yaw = ;
float pitch = ; float idealDistance = ; bool rotate; public float IdealDistance
{
get { return idealDistance; }
set { idealDistance = Mathf.Clamp( value, minDistance, maxDistance ); }
} public float Yaw
{
get { return yaw; }
} void Start()
{
Vector3 angles = transform.eulerAngles; distance = IdealDistance = 5f;
yaw = angles.y;
pitch = ; UpdateCamera();
} void Update()
{
if (Input.GetMouseButtonDown ())
rotate = true;
if (Input.GetMouseButtonUp ())
rotate = false; if( rotate )
{
yaw += Input.GetAxis ("Mouse X") * yawSensitivity;
pitch -= Input.GetAxis ("Mouse Y") *pinchSensitivity;
} IdealDistance -= Mathf.Lerp (, Input.GetAxis ("Mouse ScrollWheel") * smoothZoomSpeed, Time.deltaTime);
IdealDistance = Mathf.Clamp (IdealDistance, minDistance, maxDistance);
} void LateUpdate()
{
UpdateCamera ();
} void UpdateCamera()
{
distance = Mathf.Lerp (distance, IdealDistance, Time.deltaTime * smoothZoomSpeed); Vector3 lookAtPos = target.position;
Quaternion rotaetAngle = Quaternion.Euler (pitch, yaw, ); Vector3 desiredPos = lookAtPos - rotaetAngle * new Vector3 (, , distance); transform.position = desiredPos;
transform.rotation = rotaetAngle; transform.LookAt (target);
} static float ClampAngle( float angle, float min, float max )
{
if( angle < - )
angle += ; if( angle > )
angle -= ; return Mathf.Clamp( angle, min, max );
}

以上,完美实现摄像机跟随,并可以右键旋转,滚轮拉近功能。

Unity 类似FingerGestures 的相机跟随功能的更多相关文章

  1. unity相机跟随Player常用方式

    固定跟随,无效果(意义不大) public class FollowPlayer : MonoBehaviour { public Transform Player; private Vector3 ...

  2. Unity中几种简单的相机跟随

    #unity中相机追随 固定相机跟随,这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collectio ...

  3. unity 常用的几种相机跟随

    固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...

  4. Unity相机跟随

    固定相机跟随 这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.Collections; public c ...

  5. unity3D:游戏分解之角色移动和相机跟随

          游戏中,我们经常会有这样的操作,点击场景中某个位置,角色自动移动到那个位置,同时角色一直是朝向那个位置移动的,而且相机也会一直跟着角色移动.有些游戏,鼠标滑动屏幕,相机就会围绕角色旋转. ...

  6. 【Unity】2.8 相机(Camera)

    分类:Unity.C#.VS2015 创建日期:2016-03-31 一.简介 Unity的相机用来向玩家呈现游戏世界.你在场景中始终至少有一个相机,但也可以有多个.多个相机可以带给您双人分屏效果或创 ...

  7. js 实现类似php函数number_format的功能

    今天同事在做一个功能的时候需要使用js来实现类似php函数number_format的功能,最后就有了下面的方法,可以实现了: /** * number_format * @param number ...

  8. SharePoint 2010 类似人人网站内信功能实施

    简介:用SharePoint代码加实施的方式,完成类似人人网站内信功能,当然,实现的比较简单,样式也比较难看,只为给大家一个实施的简单思路,如有谬误,还请见谅.当然,还有就是截图比较长,当然为了让大家 ...

  9. MVC实现类似QQ的网页聊天功能-ajax(下)

    此篇文章主要是对MVC实现类似QQ的网页聊天功能(上)的部分代码的解释. 首先说一下显示框的滚动条置底的问题: 结构很简单一个大的div(高度一定.overflow:auto)包含着两个小的div第一 ...

随机推荐

  1. solr笔记之solr下载及安装

    在学习solr过程中,磕磕碰碰,遇到过许多问题,所以特写下笔记,以供需要的时候时常翻阅,也给能看到该博文的博友提供一个不全面的参考. 一.solr简介: Solr是一个独立的企业及搜索应用服务器,它对 ...

  2. 从覆盖bootstrap样式谈css选择器优先级

    样式优先级 首先简单说几个定义样式的方式: 元素内嵌: <li><a href="" style="color:#ffffff;">SH ...

  3. Gridview AutoGenerateColumns属性

    第一篇随笔,以后会陆续的把刚开始工作时的知识点都记录下来,毕竟现在用WebForm的不多了~ AutoGenerateColumns MSDN 说明 : 获取或设置一个值,该值指示是否为数据源中的每个 ...

  4. Solr field alias

    Field alias Any field, function, or transformer can be displayed with a different name in the output ...

  5. RabbitMQ-从基础到实战(4)— 消息的交换(下)

    0.目录 RabbitMQ-从基础到实战(1)- Hello RabbitMQ RabbitMQ-从基础到实战(2)- 防止消息丢失 RabbitMQ-从基础到实战(3)- 消息的交换(上) 1.简介 ...

  6. rsync (windows 服务端,linux客户端)将windows上的数据同步到linux服务器,反之也可

    一:总体概述. 1.windows上面首先装CW_rsync_Server.4.1.0_installer,安装时要输入的用户名密码要记住哦!接下来就是找到rsyncd.conf进入配置细节 2.li ...

  7. PDCA循环原理

    1.PDCA循环原理:plan  do  check action 以pdca质量环模型为质量控制和保证的理论依据,对软件质量进行把控. plan计划阶段:项目质量规划 1.分析现状,找出质量问题 2 ...

  8. 写入soap消息以及与soap消息通信

    1.些了解一下soap消息的结构以及通信方式如下图:

  9. iOS开发之KVC

    1.KVC概述 KVC(Key-value coding)是一套利用字符串标识符间接访问对象属性和关系的机制.Cocoa Programming中,Core Data,Application Scri ...

  10. python终端中退格键,方向键不能使用

    在安装Python的时候先安装 yum install readline-devel.x86_64 -y 如果python已经安装过了就重新安装 ./configure    make all mak ...