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 ...
随机推荐
- mysql复制过滤参数说明
参考文档: http://www.ywnds.com/?p=6945 https://stackoverflow.com/questions/23191160/whats-the-difference ...
- JS高级——Blob处理二进制文件
https://www.cnblogs.com/hhhyaaon/p/5928152.html
- jq封装插件
$.extend()拓展方法: $(function(){ $.extend({ money:function(){ alert("我要努力赚钱") }, money:functi ...
- vue项目国际化实现 vue-i18n使用详细教程
1.安装vue-i18n: npm i vue-i18n -S 当然你也可以这样: <script src="https://unpkg.com/vue/dist/vue.js&quo ...
- 02C++基本语法
基本语法 2.1.1单行注释 // 2.1.2多行注释 /* * */ 2.1.3标识符 C++ 标识符是用来标识变量.函数.类.模块,或任何其他用户自定义项目的名称.一个标识符以字母 A-Z 或 a ...
- How To:分析ORACLE监听日志中的IP信息
有时候需要分析出ORACLE日志监听中的IP信息,分享一个组合命令,Linux的shell下运行正常. grep "HOST=.*establish.*\* 0" listener ...
- HP下kafka的实践
kafka 简介 Kafka 是一种高吞吐量的分布式发布订阅消息系统 kafka角色必知 producer:生产者. consumer:消费者. topic: 消息以topic为类别记录,Kafka将 ...
- codeforces 373 A - Efim and Strange Grade(算数模拟)
codeforces 373 A - Efim and Strange Grade(算数模拟) 原题:Efim and Strange Grade 题意:给出一个n位的实型数,你可以选择t次在任意位进 ...
- 离职 mark
昨天(2019 年 5 月 17 日),从 离职. 从 2018 年 7 月 14 日早 10 点余分到 2019 年 5 月 17 日早 10 点余分,一共 308 天整.这就是我出学校的第一份工作 ...
- JavaScript 面向对象的编程(三) 类的继承
定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...