Unity 4.x游戏开发技巧集锦第2章摄像机的应用
来源:互联网 发布:windows7 apache 编辑:程序博客网 时间:2024/05/22 09:48
Unity 4.x游戏开发技巧集锦第2章摄像机的应用
作为游戏开发者,千万不要忽略了摄像机(Camera)的重要性。毕竟玩家是通过摄像机,才看到了游戏的视图。本章将介绍一些摄像机的常见应用。本文选自《Unity 4.x游戏开发技巧集锦》
Unity 4.x游戏开发技巧集锦2.1 设置双游戏视图
很多游戏里,一个游戏的视图中,经常会包含另一个游戏视图。而两个视图所呈现的,是由两个摄像机在场景的不同位置所拍摄的画面。例如,《QQ飞车》中,除了第三人称视图以外,游戏视图的右侧还有一个跑道位置预览视图,如图2-1所示。本节将模拟这种情况,然后说明生成这种视图效果的方法。本文选自《Unity 4.x游戏开发技巧集锦》
图2-1 《QQ飞车》中的双游戏视图
Unity 4.x游戏开发技巧集锦2.1.1 环境准备
首先,除了场景中默认生成的Main Camera对象外,还需要为场景添加4个游戏对象:Directional light、Camera、Cube和Sphere。改变两个摄像机的位置,使得它们看到场景中不同的游戏对象,如图2-2所示。
图2-2 为场景添加游戏对象,并调整它们的位置
Main Camera所拍摄到的视图里有球体,Camera所拍摄到的视图里有立方体,修改Camera拍摄视图的背景颜色,具体操作是:选中Camera,在查看器中修改名为Camera的组件的Background属性为其它的颜色,如图2-3所示。最终两个游戏视图合并时,背景颜色可以区分两个视图的边界。本文选自《Unity 4.x游戏开发技巧集锦》
图2-3 修改摄像机所拍摄视图的背景颜色
Unity 4.x游戏开发技巧集锦2.1.2 编写脚本
然后,在Project视图里创建一个C#脚本文件,并命名为PictureInPicture。打开脚本文件,并向其中添加如下代码:本文选自《Unity 4.x游戏开发技巧集锦》
- 01 using UnityEngine;
- 02
- 03 public class PictureInPicture : MonoBehaviour
- 04 {
- 05 //定义枚举类型
- 06 public enum HorizontalAlignment{left, center, right};
- 07 public enum VerticalAlignment{top, middle, bottom};
- 08 public enum ScreenDimensions{pixels, screen_percentage};
- 09 //定义枚举类型的变量
- 10 public HorizontalAlignment horizontalAlignment = HorizontalAlignment.left;
- 11 public VerticalAlignment verticalAlignment = VerticalAlignment.top;
- 12 public ScreenDimensions dimensionsIn = ScreenDimensions.pixels;
- 13
- 14 public int width = 50;
- 15 public int height= 50;
- 16 public float xOffset = 0f;
- 17 public float yOffset = 0f;
- 18 public bool update = true;
- 19
- 20 private int hsize, vsize, hloc, vloc;
- 21 //游戏对象初始化时,调用此函数
- 22 void Start ()
- 23 {
- 24 AdjustCamera ();
- 25 }
- 26 // 游戏运行时,每一帧都调用此函数
- 27 void Update ()
- 28 {
- 29 if(update)
- 30 AdjustCamera ();
- 31 }
- 32 void AdjustCamera()
- 33 {
- 34 if(dimensionsIn == ScreenDimensions.screen_percentage)//调节视图为指定百分比大小
- 35 {
- 36 hsize = Mathf.RoundToInt(width * 0.01f * Screen.width);
- 37 vsize = Mathf.RoundToInt(height * 0.01f * Screen.height);
- 38 }
- 39 else//调节视图为指定像素大小
- 40 {
- 41 hsize = width;
- 42 vsize = height;
- 43 }
- 44 if(horizontalAlignment == HorizontalAlignment.left)//水平方向上是左对齐
- 45 {
- 46 hloc = Mathf.RoundToInt(xOffset * 0.01f * Screen.width);
- 47 }
- 48 else if(horizontalAlignment == HorizontalAlignment.right)//水平方向上是右对齐
- 49 {
- 50 hloc = Mathf.RoundToInt((Screen.width - hsize) - (xOffset * 0.01f * Screen.width));
- 51 }
- 52 else //水平方向上是居中对齐
- 53 {
- 54 hloc = Mathf.RoundToInt(((Screen.width * 0.5f) -
- 55 (hsize * 0.5f)) - (xOffset * 0.01f * Screen.height));
- 56 }
- 57 if(verticalAlignment == VerticalAlignment.top)//垂直方向上是顶端对齐
- 58 {
- 59 vloc = Mathf.RoundToInt((Screen.height - vsize) - (yOffset * 0.01f * Screen.height));
- 60 }
- 61 else if(verticalAlignment == VerticalAlignment.bottom)//垂直方向上是底端对齐
- 62 {
- 63 vloc = Mathf.RoundToInt(yOffset * 0.01f * Screen.height);
- 64 }
- 65 else//垂直方向上是居中对齐
- 66 {
- 67 vloc = Mathf.RoundToInt(((Screen.height * 0.5f) -
- 68 (vsize * 0.5f)) - (yOffset * 0.01f * Screen.height));
- 69 }
- 70 camera.pixelRect = new Rect(hloc,vloc,hsize,vsize);
- 71 }
- 72 }
脚本将依据用户自定义的设置,决定该如何摆放,以及以多大的尺寸,显示Camera所拍摄的视图。本文选自《Unity 4.x游戏开发技巧集锦》
0 0
- Unity 4.x游戏开发技巧集锦第2章摄像机的应用
- Unity 4.x游戏开发技巧集锦(内部资料)
- 《Unity 游戏开发技巧集锦》
- Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
- Unity 游戏开发技巧集锦之材质的应用的创建反射材质
- Unity 游戏开发技巧集锦之创建透明的材质
- Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍
- Unity游戏开发技巧集锦2.1.3实现效果
- Unity 游戏开发技巧集锦之创建自发光材质
- Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
- Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质
- Unity 4.x 2D游戏开发基础教程
- Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果
- unity学习之摄像机的应用
- 【Unity 3D游戏开发学习笔记】总结摄像机和光源的使用方法
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- unity游戏开发之相关的注意事项及技巧
- linux下一些常用命令
- 通过ssh 执行远端服务器命令
- 国家气象局提供的天气预报接口
- android webview自定义标签!(实现打电话的功能);
- 在ScrollView中使用pinch实现图片的缩放
- Unity 4.x游戏开发技巧集锦第2章摄像机的应用
- 5.2.2 元组类型和值的构造函数
- 绿色版的PDF格式转换软件
- 为什么敏捷方法能在软件开发中行之有效
- Qt类之--Qwidget
- java之yield(),sleep(),wait()区别详解-备忘笔记
- IO 字符流 FileWriter IO异常的处理 字符数据续写 FileReader 复制原理:
- UIView(包括子类)的几个初始化时执行动作的时机
- 设计模式_策略模式