在第一或第三人称ACT和FPS游戏中,相机的运动需求是多种多样的,Unity内置的Cinemachine包可以助你快速实现不同相机功能,例如范围追踪,边界设置等。

例如,考虑这样一个功能,这在很多游戏中都是非常常用的:

1.在屏幕中心的一定范围内摄像机追踪一个主角单位,但这是一个惰性相机,当且仅当主角快要离开屏幕中心向屏幕边缘移动时相机才跟随过去。

2.当摄像机运动到了地图边缘时,它不再继续追踪目标,也就是说,相机还需要界定一个运动范围。

观察上图,图中黄色的点为摄像机跟踪的目标,淡蓝色的框为屏幕相机追踪的过渡区域,只有当追踪目标移动到淡蓝色的框中时,摄像机才开始朝角色的运动方向追踪,角色运动停止后,摄像机会保证追踪的主角停止在淡蓝色框内,红色框外。

图中主角已经运动到地图的边缘,所以摄像机不会继续向上或向右运动,这是因为利用碰撞盒子设置了摄像机的运动范围。

如上图,摄像机已经运动到了黄色碰撞盒子的边界,它无法再继续向上或向右运动,这样可以保证摄像机的视野范围不会超出地图的边缘。

知道了这些后,再来了解Cinemachine的功能将变得非常容易。

Cinemachine的功能看上去非常之多,但最终还是离不开虚拟摄像机这一组件。

我们可以利用菜单栏先创建一个虚拟摄像机:

虽然后面有各种各样的摄像机组件可以选择,但其实都是虚拟摄像机的不同设置而已,只要弄清楚了这一个组件的用法,其他都可以利用设置或自定义脚本来实现。

基本模块中比较重要的就是Follow和Look At,Follow是追踪的主角Transform,也可以运行后动态设置。

Look At根据需要选择是否设置,如果摄像机需要需要进行视角方位的旋转变换,则需要有一个Look At的目标,可以根据该目标的朝向来进行视角的旋转;只是跟随主角在固定的视角方向进行平移运动的话,就可以不用设置Look At。

Body模块主要功能是处理场景中相机和它的目标之间的位置关系。

用的比较多的是Ransposer和Framing Transposer,Framing Transposer可以很方便的实现惰性相机,里边有一个参数是Dead Zone区域设置,默认情况下是零,这时相机始终跟随目标位置反复移动,当Dead Zone扩大后,相机在屏幕中间的区域就会变得非常懒,就像死了一样,只有角色移动出死亡区域后相机才重新开始追踪目标。(如最上面图中的全透明区域)

Extentions提供了额外的扩展组件功能:

本例中增加了摄像机的区域设置,选择之后会自动增加一个脚本:

通过该脚本组件可以指定一个2D或3D的碰撞盒子作为作为摄像机的运动范围,利用该组件可以快速控制摄像机只在地图视野范围内运动。

官方参考:

https://connect.unity.com/p/li-yong-cinemachinekuai-su-chuang-jian-you-xi-zhong-de-xiang-ji-xi-tong

Unity 利用Cinemachine快速创建灵活的相机系统的更多相关文章

  1. MySQL Database on Azure - 利用PowerShell快速创建使用数据库服务

    如果您的应用需要通过脚本快速创建一个或多个MySQL数据库,MySQL Database on Azure目前开放了对于PowerShell的支持,可以帮助您快速利用自动化脚本进行数据库服务的创建.管 ...

  2. 如何利用Dreamwever快速创建表格???

    这样的一张表,用table写完感觉好累,很多单元格都不一样大,还要单独设置样式,今天还分享下用Dreamwever快速创建表格. 可能这会有人知道了!当然是插入表格了!

  3. 利用Docker快速创建Nginx负载均衡节点

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...

  4. 三分钟入坑指北 🔜 Docsify + Serverless Framework 快速创建个人博客系统

    之前由于学摄影的关系,为了提高自己的审美,顺便锻炼下自己的英文能力,翻译了不少国外艺术类的 文章.最近一直想搭一个个人博客来存放这些内容,又懒得折腾建站,遂一直搁置. 直到偶然发现了 docsify ...

  5. 利用 Create React Native App 快速创建 React Native 应用

    本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...

  6. Hyper-v之利用差异磁盘快速创建多个虚拟机

    在新建Hyper-v磁盘的时候 有3种选项 其中分别是 固定大小 动态扩展 和 差异(differencing,个人习惯叫 差分) 其中 固定大小是新建的时候 Hyper-v创建一个设置大小值的文件, ...

  7. 利用sublime的snippet功能快速创建代码段

    在前端开发中我们经常会输入相同的一些基本代码,例如常用的jquery引用,bootstrap框架,cssreset等等,如果每次使用时在复制粘贴感觉很麻烦,这里介绍一种更为简洁的方法 利用sublim ...

  8. Unity 基于Cinemachine计算透视摄像机在地图中的移动范围

    Unity中Cinemachine的基础功能介绍可详见之前写的博客: https://www.cnblogs.com/koshio0219/p/11820654.html 本篇的重点是讨论,在给定规则 ...

  9. 利用vue-cli3快速搭建vue项目详细过程

    一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...

随机推荐

  1. 2019/12/12学习内容摘要(Linux系统用户与用户组管理②)

    5.命令 chfn 用于修改用户的finger (finger为 /etc/passwd 文件第五个字段中显示的信息) 三,用户密码管理 1.命令passwd  格式 passwd [username ...

  2. [Go] 轻量服务器框架全局配置的实现以及解析json

    在一个应用中经常需要有一个配置文件,可以对代码中的参数进行配置,可以使用一个json文件来对应一个struct的对象,进行全局配置 建一个conf/zinx.json作为配置文件 { "Na ...

  3. Appium常用指令

    右键图片“在新标签页打开”可查看大图

  4. java基础 - 形参和实参,值传递和引用传递

    形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...

  5. debug查找主板生产日期

    实验环境:XP(XP以上系统没有自带debug) 查询主板生产日期,发现时间为07/02/15 -e命令进行修改日期,尝试将07年改为08年 在查询一下修改完成后的日期,发现日期不变 原因:这块内存是 ...

  6. 在浏览器地址栏输入www.baidu.com到打开百度首页这期间到底发生了什么?

    刚才无意间看到这么一个面试题,觉得有点意思,我想从五层网络模型的角度说说我的看法. 1.首先通过DNS域名系统向域名服务器发送域名解析请求来得到百度的IP地址39.156.69.79:2.系统通过AR ...

  7. weblogic解决jar包冲突

    前言 在项目中利用POI开发excel.word的导入导出功能,而POI在解析xlsx及docx两种高版本文档时需要依赖xmlbeans包,但weblogic容器中提供了低版本的xmlbeans,从而 ...

  8. 2019阿里天猫团队Java高级工程师面试题之第三面

    2019阿里天猫团队Java高级工程师面试题之第一面 2019阿里天猫团队Java高级工程师面试题之第二面 1.说说MySQL的锁并发?加锁的机制是什么? https://www.cnblogs.co ...

  9. 几种常见的css布局_l流体布局、圣杯布局、双飞翼布局

    1.流体布局: <!DOCTYPE html><html> <head> <meta charset="utf-8"> <ti ...

  10. Linux配置svn服务器版本库

    1)创建版本库首先使用yum安装subversion 2)创建版本库 svnadmin create /home/svn/svnfile 3)进入conf目录 authz               ...