[Unity基础]镜头管理类
一个游戏中可能会有各种类型的镜头,例如有时候是第一人称,有时是第三人称,有时又会给个特写等等,因此可以定义一个镜头类型枚举,在不同的场合进行切换,管理起来很方便。
CameraManager.cs
using UnityEngine;
using System.Collections; //镜头类型
public enum CameraType
{
NotFollow, //不跟随(可以自由设置镜头)
FixedFollow, //固定跟随
SmoothFollow, //平滑跟随
} public class CameraManager : MonoSingletion<CameraManager> { private Camera camera;
private Transform cameraTra;
private Transform targetTra;
private CameraType cameraType; //固定跟随参数
private Vector3 fixedPosOffset;//位置偏移 //设置镜头
public void SetCamera(Camera camera)
{
this.camera = camera;
cameraTra = camera.gameObject.transform;
} //设置目标
public void SetTarget(GameObject go)
{
targetTra = go.transform;
} private void LateUpdate()
{
if ((cameraTra == null) || (targetTra == null))
{
return;
} switch (cameraType)
{
case CameraType.NotFollow:
return;
case CameraType.FixedFollow:
FixedFollow();
break;
case CameraType.SmoothFollow:
break;
default:
break;
}
} //-----------------------------------------------不跟随 start
public void SetNotFollow()
{
cameraType = CameraType.NotFollow;
}
//-----------------------------------------------不跟随 end //-----------------------------------------------固定跟随 start
public void SetFixedFollow(Vector3 fixedPosOffset, Vector3 rot)
{
cameraType = CameraType.FixedFollow;
this.fixedPosOffset = fixedPosOffset;
cameraTra.localEulerAngles = rot;
} private void FixedFollow()
{
cameraTra.position = targetTra.position + fixedPosOffset;
}
//-----------------------------------------------固定跟随 end
}
[Unity基础]镜头管理类的更多相关文章
- Unity协程(Coroutine)管理类——TaskManager工具分享
博客分类: Unity3D插件学习,工具分享 源码分析 Unity协程(Coroutine)管理类——TaskManager工具分享 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处 ...
- 【转】【Unity】实现全局管理类的几种方式
本文原作者未知,转载自:http://blog.csdn.net/ycl295644/article/details/42458477 如何在Unity中实现全局管理类?由于Unity脚本的运行机制和 ...
- Unity中实现全局管理类的几种方式
(搬运自我在SegmentFault的博客) 如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别. 第一种方式是使用静态类.适合 ...
- UML基础系列:类图
类图描述系统中类的静态结构,它不仅定义系统中的类,描述类之间的联系,如关联.依赖.聚合等,还包括类的内部结构(类的属性和操作).类图描述的是静态关系,在系统的整个生命周期中都是有效的.对象图是类图的实 ...
- 【Unity3D游戏开发】之全局管理类的几种方式 (十六)
如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别. 第一种方式是使用静态类.适合存储一些全局的变量,如游戏当前关卡.玩家得分等 ...
- WF工作流与管理类应用系统工作流需求实现的一些误区
如今实现各种应用系统大家都知道工作流是一个非常重要的环节,不同的业务系统的工作流需求是需要找相应的工作流产品去实现的,因为不同工作流产品的架构细节也许会成为某类需求实现的瓶颈. WF ...
- OC基础 内存管理
OC基础 内存管理 我们所了解的c语言内存管理,如下: (1)c语言的内存分配:char *p = (char*)malloc(100*sizeof(char)); (2)c语言的内存释放:free ...
- DCOS :私有云的物理基础架构管理引擎
https://cloud.tencent.com/developer/article/1005598 一.引言 云计算经过多年的发展,逐渐从概念到渐为人认知.到接受.到现在全行业拥抱上云,云的客户也 ...
- Unity——对象池管理
Unity对象池管理 一.Demo展示 二.逻辑 在游戏中会出现大量重复的物体需要频繁的创建和销毁:比如子弹,敌人,成就列表的格子等: 频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性 ...
随机推荐
- mac os x 安装mysql 5.7
一 下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download” ...
- openwrt lan/wan口自动翻转
参考: http://www.right.com.cn/forum/thread-75532-1-1.html 该实验基于ar9331 dragino2板子的,板子只引出一个LAN口. 1. 固件编译 ...
- 【java】Hello World
class Demo { //程序的主入口,能保证类的独立运行 public static void main(String[] args) { System.out.println("He ...
- centos下redis的导出和导入(限set命令)
#!/bin/bash REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_DB=10 KEYNAME="*" KEYFILE=redis_key ...
- [CMAKE] 详解CMakeLists.txt文件
[快速查询]https://cmake.org/cmake/help/v2.8.8/cmake.html#section_Commands 1 CMake简介 CMake是跨平台编译工具,比make更 ...
- 实例快速上手UDP和TCP的使用
TCP和UDP两个协议在Java通信编程中是如何被使用的 UDP协议与TCP协议之间的区别不再分析,主要是分析一下这两个协议在Java通信编程中是如何被使用的.首先介绍TCP,对于TCP,Java语言 ...
- DS二叉树--二叉树构建与遍历
题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历.中序遍历和后序遍历结果 输入 第一 ...
- pandas 读mysql数据库(整个表或者表的指定列)
问题1:如何从数据库中读取整个表数据到DataFrame中? 首先,来看很容易想到的的办法 def read_table_by_name(self, table_name): "" ...
- hadoop-n.x.y.tar.gz、hadoop-n.x.y.tar.gz.asc 、hadoop-n.x.y.tar.gz.md5 、hadoop-n.x.y.tar.gz.mds分别是什么?
不多说,直接上干货! 我这里,以hadoop-2.6.0为例. hadoop-n.x.y.tar.gz.mds,此mds文件是为了检验在下载和移动文件过程中文件的完整性. 通过验证文件的md5值去检验 ...
- python selenium 模拟登陆百度账号
代码: from selenium import webdriver url = 'https://passport.baidu.com/v2/?login' username = 'your_use ...