孙广东  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   完成。

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





Unity游戏小地图生成的更多相关文章

  1. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...

  2. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...

  3. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新

    本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...

  4. 2017年Unity游戏开发视频教程(入门到精通)

    本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...

  5. 工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧

    Unity 是一个备受欢迎的游戏开发平台.它的功能令人印象深刻,同时也迎合了不同的游戏开发需求.游戏开发者可以使用 Unity 创建任何类型的游戏,从世界级的 RPG 游戏到最流行的增强现实游戏 Po ...

  6. 【Unity游戏开发】浅谈Lua和C#中的闭包

    一.前言 目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#.通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑.这样既能在保持一定的游戏运行效率的同 ...

  7. Unity优化方向——优化Unity游戏中的脚本(译)

    原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity ...

  8. Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

    Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明 ...

  9. 【Unity游戏开发】不接SDK也能在游戏内拉起加QQ群操作?

    一.引子 一般在游戏进行对外测试的时候都会有一个玩家QQ群,方便玩家反馈问题.交流游戏心得等.那么为了增加玩家加QQ群的欲望,可能会在游戏里面设计一个小功能,点击一下可以直接拉起手Q加群的操作,加了Q ...

随机推荐

  1. iOS 声明属性关键字讲解

    atomic: 原子操作(原子性是指事务的一个完整操作,操作成功就提交,反之就回滚. 原子操作就是指具有原子性的操作)在objective-c 属性设置里面 默认的就是atomic ,意思就是 set ...

  2. Shell基础笔记一

    由于工作需要,开始学习Shell编程,都是一些简单的基础知识,现整理收集分享出来,希望对大家有帮助 -------------------------------------------------- ...

  3. bootstrap datatable 数据刷新问题

    在项目中,页面初始化的时候,通过通过向后台请求数据,页面初始化完之后,datatable是有数据的,当我点击页面的搜索按钮(按照时间过滤数据),datatable的数据要能重新刷新或者重载:这一点,我 ...

  4. dutacm.club_1085_Water Problem_(矩阵快速幂)

    1085: Water Problem Time Limit:3000/1000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/Othe ...

  5. Understanding and Analyzing Application Crash Reports

    Introduction When an application crashes, a crash report is created and stored on the device. Crash ...

  6. 基于 CentOS 搭建Seafile个人网盘

    一.安装 Seafile 安装依赖环境使用 yum 安装 Python 及 MySQL: yum install python python-setuptools python-imaging pyt ...

  7. BZOJ 3884: 上帝与集合的正确用法 扩展欧拉定理 + 快速幂

    Code: #include<bits/stdc++.h> #define maxn 10000004 #define ll long long using namespace std; ...

  8. 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    package algorithms; import java.util.ArrayList; import java.util.Stack; /** * public class ListNode ...

  9. 软件工程师需要了解的网络知识:从铜线到HTTP(一)—— 前言

    转自:https://lvwenhan.com/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/485.html?hmsr=toutiao.io&utm_medium ...

  10. POJ2454——Jersey Politics

    POJ2454——Jersey Politics 题目大意: 在泽西奶牛和荷斯坦奶牛的最新普查中,威斯康星奶牛在谷仓中获得了三个档位. 泽西奶牛目前控制着国家重新分配委员会. 他们想将国家分为三个相当 ...