孙广东  2015.6.25

这个在AssetStore上有几个不错的插件, 除了知道原理,能自己实现还是好的。

非常多插件是不会直接使用的。而是要依据自己项目的需求进行改动或者就是自己写。

那么我们要怎么弄呢? 大家能够先了解一下:https://www.assetstore.unity3d.com/en/#!/content/10043 项目Demo的代码,就会看到小地图的应用。事实上原理都是一样的。关于这一部分,网上也是有一箩筐。

按部就班的实现这个功能:

步骤1:

在菜单条中选择【GameObject】-》【Create Other】-》【Camera】 创建一个新的摄像机。它将作为小地图的专用摄像机。调整他的位置,使其在场景上方垂直向下。 然后将其设置为Orthographic, 取消透视并调整Size的值,改变视图大小,设置Viewport Rect 改变摄像机显示区域的位置和大小, 如图所看到的:

   

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAxOTcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

步骤2:

执行游戏。屏幕的右上方即会出现一个小地图,但根本看不清里面的东西。可能位置不对。

如今的小地图摄像机和正常摄像机的显示是一样的,仅仅只是它是从上向下看。接下来,我们要做的是使小地图摄像机仅仅专注自己须要的东西。并通过脚本使小地图摄像机的视图不管在何种分辨率下永远是一个正方形。

步骤3:

创建一个球体,命名为dummy。 将其材质设置为,红色Self-Illumin/Diffuse, 它将作为敌人的 “替代体” 仅仅能显示在小地图之中,并不能在主摄像机视图显示出来。将球体Sphere Collider 去掉。我们仅仅须要它的显示功能。

步骤4:

创建一个Layer。命名为dummy, 并设置球体的Layer位dummy。

步骤5:

将球体置于敌人Prefab的层级之下,这样它会随着敌人的移动而移动,如图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAxOTcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

步骤6:

选择 主摄像机,取消显示 dummy层,球体在主摄像机视图中将不会被显示出来,如图所看到的:

步骤7:

选择小地图摄像机,使其仅仅显示level 和 dummy 层。这样在小地图中仅仅能看到场景和球体。

如图所看到的

步骤8:

使用同样的方法为主角也创建一个”替代体“  。能够为其制定与敌人不同的颜色。

步骤9:

创建脚本 MiniCamera.cs ,将其指定给小地图摄像机,加入代码例如以下:

using UnityEngine;
using System.Collections; [AddComponentMenu("Game/MiniCamera")]
public class MiniCamera : MonoBehaviour { // Use this for initialization
void Start () {
// 获得屏幕分辨率比例
float ratio = (float)Screen.width / (float)Screen.height;
// 使摄像机视图永远是一个正方向, rect的前两个參数表示XY位置。后两个參数是XY大小
this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, 0.2f * ratio);
}
}

这里的代码非常简短。 主要是使小地图摄像机的视图永远是一个正方形。

步骤10:

由于主摄像机上已经有了一个AudioListener, 同一个场景中仅仅同意存在一个该组件,所以要取消选中(或删除)小地图摄像机的【AudioListener】,如图所看到的。

OK   完成。

假设希望继续改进小地图的显示。还能够为场景专门制作一个用于小地图显示的模型。





最新文章

  1. Matlab 读取文件夹中所有的bmp文件
  2. spring amqp rabbitmq fanout配置
  3. 使用enum建立简单的状态机
  4. 被spring和hibernate4逼疯
  5. 加密app.config
  6. MVC基础知识-持续更新....
  7. JS一定要放在Body的最底部么? 聊聊浏览器的渲染机制
  8. Qt入门(14)——父窗口部件和子窗口部件
  9. php缓存小技巧
  10. RTP/RTCP/RTSP/RSVP/SDP
  11. php内核一 一次请求与结束
  12. Xamarin.Android开发实践(二)
  13. C++界面库
  14. 全新E:网站不是之前排名浮动 相比于竞争对手究竟缺少了什么?
  15. matlab图片清晰度调整
  16. Asp.NetCore轻松学-使用Docker进行容器化托管
  17. rxjs一句话描述一个操作符(1)
  18. springboot情操陶冶-@Conditional和@AutoConfigureAfter注解解析
  19. CSS魔法堂:更丰富的前端动效by CSS Animation
  20. 分布式 NewSQL 对比

热门文章

  1. git上手简洁手册
  2. 主从 binlog_format 设置关系
  3. Stanford coursera Andrew Ng 机器学习课程第四周总结(附Exercise 3)
  4. cstring 转string
  5. 梦想CAD控件安卓文字样式
  6. PS切图基本操作
  7. python_ 学习笔记(基础语法)
  8. java容器(数组和集合)内元素的排序问题
  9. Linux 应用总结:自动删除n天前的日志
  10. 调试LM1117电压转换芯片