网站大量收购独家精品文档,联系QQ:2885784924

Unity .x实战开发指南.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unity .x实战开发指南.doc

第5章 相 机 本章主要涉及以下内容: 生成画中画效果。 在多部相机之间进行切换。 根据屏幕内容生成纹理。 相机放大效果。 显示小型地图。 创建游戏中的监视相机。 5.1 简 介 作为开发人员,应对相机对象给予足够的重视,这也是玩家查看游戏的窗口。本章介绍相机的多种应用方式,进而增强玩家的游戏体验。 对此,可通过多种方式定义相机,其中包括: 剔除特定层上的渲染对象。 可设置为正交模式渲染(也就是说,不包含透视效果)。 可包含相应的视域(FOV)以模拟广角镜头。 可在其他相机上方,或者在屏幕的特定区域内进行渲染。 可渲染至纹理中。 当然,相关内容可能远不止于此。图5.1显示了两个同步相机视图。 需要注意的是,在本章中的某些方案中,相机还可跟随玩家的第三人称角色运动,即Unity中的Multipurpose Camera Rig,该相机最初源自Unity中的示例程序,并可通过Assets | Import Package | Camera菜单导入至项目中。为了简化操作,可将包含该项内容的MultipurposeCamera Unity Package制作为预置组件,该组件位于1362_05_codes文件夹中。 图5.1 5.2 生成画中画效果 在某些时候,多个视口显示将十分有用。例如,用户需要显示不同位置处的多个同步事件;或者需要显示多人游戏中的某个独立窗口。尽管可调整相机的Normalized Viewport Rect参数并采用手动方式实现这一功能,但当前方案采用一系列的偏好设置,进而可独立于用户的显示设置。 准备工作 当前方案将采用Unity中的BasicScene资源包,其中包含了名为BasicScene的场景。该资源包位于1362_05_codes文件夹内。 实现方式 当创建画中画效果时,需要执行下列操作步骤: (1)向当前项目中导入BasicScene资源包。 (2)在Project视图中,打开BasicScene关卡,该基本场景包含了动画角色以及某些附加的几何对象。 (3)通过Hierarchy视图上方的Create下拉菜单,可向场景中添加新的相机对象(Create | Camera)。 (4)选择创建完毕的相机,在Inspector视图中,将其Depth值调整至1,如图5.2所示。 图5.2 (5)在Project视图中,创建新的C#脚本文件,并将其重命名为PictureInPicture。 (6)打开脚本文件,并利用下列代码替换原有内容: using UnityEngine; public class PictureInPicture: MonoBehaviour { public enum hAlignment{left, center, right}; public enum vAlignment{top, middle, bottom}; public hAlignment horAlign = hAlignment.left; public vAlignment verAlign = vAlignment.top; public enum UnitsIn{pixels, screen_percentage}; public UnitsIn unit = UnitsIn.pixels; public int width = 50; public int height= 50; public int xOffset = 0; public int yOffset = 0; public bool update = true; private int hsize, vsize, hloc, vloc; void Start (){ AdjustCamera (); } void Update (){ if(update) AdjustCamera (); } void AdjustCamera(){ int sw = Screen.width; int sh = Screen.height; float swPercent = sw * 0.01f; float shPercent = sh * 0.01f; float xOffPercent = xOffset * swPercent; float yOffPercent = yOffset * shPercent; int xOff; int yOff; if(unit == UnitsIn.screen_percentage){ hsize = wid

文档评论(0)

zhangningclb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档