第一种,使用Transform 函数 RotateAround。

代码如下:

    public Transform target;//获取旋转目标

    private void camerarotate() //摄像机围绕目标旋转操作
{
transform.RotateAround(target.position, Vector3.up, speed*Time.deltaTime); //摄像机围绕目标旋转
var mouse_x = Input.GetAxis("Mouse X");//获取鼠标X轴移动
var mouse_y = -Input.GetAxis("Mouse Y");//获取鼠标Y轴移动
if (Input.GetKey(KeyCode.Mouse1))
{
transform.Translate(Vector3.left*(mouse_x*15f)*Time.deltaTime);
transform.Translate(Vector3.up*(mouse_y*15f)*Time.deltaTime);
}
if (Input.GetKey(KeyCode.Mouse0))
{
transform.RotateAround(target.transform.position, Vector3.up, mouse_x*);
transform.RotateAround(target.transform.position, transform.right, mouse_y*);
}
} private void camerazoom() //摄像机滚轮缩放
{
if (Input.GetAxis("Mouse ScrollWheel") > )
transform.Translate(Vector3.forward*0.5f); if (Input.GetAxis("Mouse ScrollWheel") < )
transform.Translate(Vector3.forward*-0.5f);
} 作者:白水SR
链接:https://www.jianshu.com/p/dbd5c82cfb74
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如果出于某些特殊情况,比如被面试要求不允许使用RotateAround函数,或者非Unity平台等等。可以考虑使用四元数。

代码如下:

void MyRotateAround(Vector3 center, Vector3 axis, float angle)
{
Vector3 pos = transform.position;
Quaternion rot = Quaternion.AngleAxis(angle, axis);
Vector3 dir = pos - center; //计算从圆心指向摄像头的朝向向量
dir = rot * dir; //旋转此向量
transform.position = center + dir;//移动摄像机位置
var myrot = transform.rotation;
//transform.rotation *= Quaternion.Inverse(myrot) * rot *myrot;//设置角度另一种方法
transform.rotation = rot * myrot; //设置角度
}

Unity摄像机围绕物体旋转两种实现方式的更多相关文章

  1. Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果

    Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果 梗概: 一. 摄像机围绕目标物体旋转, 即摄像机离目标物体有一定的距离且旋转轴心为该物体的位置. 二. 当目标物体被障碍物挡住后, 需要将摄像机 ...

  2. android旋转动画的两种实现方式

    在android开发,我们会常常使用到旋转动画,普通情况下旋转动画有两种实现方式,一种是直接通过java代码去实现,第二种是通过配置文件实现动画.以下是两种动画的基本是用法: 纯Java代码实现: / ...

  3. 第63天:json的两种声明方式

    一. json 两种声明方式 1. 对象声明   var  json = {width:100,height:100} 2. 数组声明   var  man = [        //  数组的 js ...

  4. Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式

    封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...

  5. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  6. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  7. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  8. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

  9. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

随机推荐

  1. Java NIO(一)I/O模型概述

    基本概念讲述 什么是同步? 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行. 什么是异步? 异步就是 ...

  2. Js 面向对象之封装,继承,原型,原型链

    封装 ,继承 ,原型, 原型链 封装 ? 面向对象有三大特性,封装.继承和多态.对于ES5来说,没有class(类)的概念,并且由于JS的函数级作用域(函数内部的变量在函数外访问不到),所以我们就可以 ...

  3. virtualbox+vagrant学习-2(command cli)-5-vagrant halt命令

    Halt 格式: vagrant halt [options] [name|id] 该命令关闭vagrant管理的正在运行的机器. userdeMacBook-Pro:~ user$ vagrant ...

  4. virtualbox+vagrant学习-2(command cli)-21-vagrant up命令

    Up 格式: vagrant up [options] [name|id] 这个命令根据你的Vagrantfile文件创建和配置客户机. 这是“vagrant”中最重要的一个命令,因为它是创建任何va ...

  5. virtualbox+vagrant学习-3-Vagrant Share-2-HTTP Sharing

    HTTP Sharing Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器.这被称为“HTTP共享”,在使用Vagrant Share时默认 ...

  6. 神经网络中Epoch、Iteration、Batchsize相关理解

    batch 深度学习的优化算法,说白了就是梯度下降.每次的参数更新有两种方式. 第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种方法每更新一次参数都要把数据集里的所有样 ...

  7. java学习笔记-JavaWeb篇一

    JavaWEB篇一 1 Tomcat的安装和配置 2 JavaWeb开发的目录结构 3 使用Eclipse开发JavaWeb项目 4 第一个Servlet程序 5 Servlet 的配置及生命周期方法 ...

  8. 单链表(c语言实现)贼详细

    直接上代码吧 #include<stdio.h> #include<malloc.h> /* 单链表特点: 它是一种动态的储存结构,链表中每个节点占用的储存空间不是预先分配的, ...

  9. Linux Shell常用技巧(四)

    九.  awk实用功能: 和sed一样,awk也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行“选择”动作.如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上.如果一 ...

  10. spark练习——影评案例

    第一次写博客,新人上路,欢迎大家多多指教!!! ---------------------------------------------------------------------分割线---- ...