Unity游戏小地图生成
孙广东 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游戏小地图生成的更多相关文章
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新
本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...
- 2017年Unity游戏开发视频教程(入门到精通)
本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...
- 工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧
Unity 是一个备受欢迎的游戏开发平台.它的功能令人印象深刻,同时也迎合了不同的游戏开发需求.游戏开发者可以使用 Unity 创建任何类型的游戏,从世界级的 RPG 游戏到最流行的增强现实游戏 Po ...
- 【Unity游戏开发】浅谈Lua和C#中的闭包
一.前言 目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#.通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑.这样既能在保持一定的游戏运行效率的同 ...
- Unity优化方向——优化Unity游戏中的脚本(译)
原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity ...
- Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果
Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明 ...
- 【Unity游戏开发】不接SDK也能在游戏内拉起加QQ群操作?
一.引子 一般在游戏进行对外测试的时候都会有一个玩家QQ群,方便玩家反馈问题.交流游戏心得等.那么为了增加玩家加QQ群的欲望,可能会在游戏里面设计一个小功能,点击一下可以直接拉起手Q加群的操作,加了Q ...
随机推荐
- Java屏幕截图及剪裁
Java标准API中有个Robot类,该类可以实现屏幕截图,模拟鼠标键盘操作这些功能.这里只展示其屏幕截图. 截图的关键方法createScreenCapture(Rectangle rect) ,该 ...
- HDU_1864_最大报销额_01背包
最大报销额 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...
- js延时加载的方法
js的延迟加载有助与提高页面的加载速度,以下是延迟加载的几种方法: 1.使用setTimeout延迟方法的加载时间 延迟加载js代码,给网页加载留出更多时间 <script type=" ...
- 第三节:执行一些EF的增删改查
针对两表操作 一丶增加 #region 05-增加操作 /// <summary> /// 05-增加操作 /// </summary> /// <param name= ...
- Codeforces 280C - Game on Tree
传送门:280C - Game on Tree 不知道期望是啥的请自行Baidu或Google,(溜了 题目大意,有一棵有根树,每次随机选择一个节点,将这个节点和它的子树删除,问将整棵树删除的期望次数 ...
- poj3061 Subsequence【尺取法】
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- JS中遍历EL表达式中后台传过来的Java集合
前言:在我的项目里有这么一个情况,后台直接model.addAttribute()存储了一个对象,此对象内部有一个集合,前端JSP处理的方法正常情况下就是直接使用EL表达式即可.但是如果在JS中需要使 ...
- 集合:Collection
why ? when ? how ? what ? Java 集合框架图 由上图我们可以看到,Java 集合主要分为两类:Collection 和 Map. Collection 接口 遍历 Coll ...
- Scrapy用Cookie实现模拟登录
模拟登录是爬取某些站点内容的一个关键,有些网站(特别是论坛类),不登录的话,一个数据也拿不到. 模拟登录有这样几个关键: 弄清楚登录的url一些网站打开出现登录的页面,地址栏大多数不是登录提交表单的u ...