制作小地图:使用Camera渲染出来Render Texture

  原理:使用摄像机从上到下获得场景游戏物体,摄像机Culling Mask渲染层级可设置是否需要在小地图上展示游戏物体,将摄像机获得的场景实时在NGUI上Texture中

  游戏项目已托管到Github上:  传送门

  小地图自刷新制作Minimap小地图:  传送门

小地图效果:

(不足:当玩家旋转方向的时候,并未对玩家UI进行角度转换~)

 

预制场景

  创建一个场景Gary_map

  调整场景灯光亮度Intensity为0.3

  添加一个Plane地面,给地面添加材质模拟地图场景

  添加一个Capsule物体作为玩家Player,为Player绑定PlayerMove脚本控制其移动

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class PlayerMove : MonoBehaviour {
  6.  
  7. public float speed = ;
  8.  
  9. // Use this for initialization
  10. void Start () {
  11.  
  12. }
  13.  
  14. // Update is called once per frame
  15. void Update () {
  16. float h = Input.GetAxis("Horizontal");
  17. float v = Input.GetAxis("Vertical");
  18.  
  19. transform.Translate(new Vector3(h,,v)*speed*Time.deltaTime);
  20. }
  21. }

PlayerMove.cs

  添加几个Capsule物体作为敌人Enemy,给Enemy添加脚本使其随机移动

  添加材质给Player,区别于敌人

  添加Ground标签给地面,Human标签给玩家和敌人(目的:只用来作为摄像机Culling Mask渲染层级,不做玩家和敌人区分)

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class EnemyMove : MonoBehaviour {
  6.  
  7. public float speed =;
  8.  
  9. private float timer = ;
  10. private float dirx = ;
  11. private float dirz = ;
  12. // Update is called once per frame
  13. void Update () {
  14. timer += Time.deltaTime;
  15. if (timer > )
  16. {
  17. dirx = Random.Range(-1f, 1f);
  18. dirz = Random.Range(-1f, 1f);
  19. timer = ;
  20. }
  21. transform.Translate(new Vector3(dirx, , dirz) * speed * Time.deltaTime);
  22. }
  23. }

EnemyMove.cs

实现过程

  给Player添加Quad,作为小地图的mapicon,放到Player正上方并将其x轴旋转90°

  给mapicon添加一个图标,材质设为Diffuse(透明)

  给mapicon一个Minimap标签

  给每个敌人AI一个红色的icon

  添加一个Camera放到Player中,Position设置为(0,9,0),X轴旋转90°,命名为minimap-camera

  设置minimap-camera的Projection为Orthographic

  minimap-camera小地图大小由Size控制

  为了将在小地图上看不见敌人,将Culling Mask取消Human的渲染

  将小地图渲染的视觉渲染到Render Texture图片上

  创建一个新的Render Texture,命名为minimap-texture,将minimap-texture绑定到minimap-camera上的Target Texture

使用NGUI添加小地图进场景中

  添加NUI编辑包

  版本遗弃问题:遇到提示RuntimePlatform.WindowsWebPlayerNGUI过时,将WindowsWebPlayerNGUI修改为WindowsPlayerNGUI

  添加NGUI中第一个背景UI Root

  UI Root添加一个Simple Texture

  将Texture放到UI Root右上角并将minimap-texture指定到UITexture上的Texture中

  将Texture下的Anchors设置为Unified,放置到UI Root右上方

  将正方形地图制作成圆形地图

  制作一个自定义材质Mask,取名minimap-mat

  

  将minimap-mat放置到Texture下的Material中,可通过改变Size来改变小地图的大小

  切换3D视角,地图camera渲染地面

  Main Camera和minimap-camera下的Culling Mask设置渲染Ground标签(地面)

  

Unity3D_(插件)使用Camera渲染制作Minimap小地图的更多相关文章

  1. Unity3D_(插件)小地图自刷新制作Minimap小地图

    制作小地图:小地图自刷新制作小地图 原理:用不同的图标表示场景中不同的游戏物体,将(场景中)游戏物体位置实时放置小地图上,并控制图标的位置更新 好处:可更好控制小地图上所需要显示的游戏物体 游戏项目已 ...

  2. jQuery插件-jgcharts实现Javascript制作Google Charts

    from:http://www.zz68.net/program/Ajax/2010/0415/1992.html jgcharts是一个基于jQuery的非常经典的Google Charts图表制作 ...

  3. Unity 制作RPG小地图

    效果图: 最近公司要制作小地图,搜索网上的文章没找到有什么小实例,=.=直接上步骤: 制作小地图步骤: 1. 人物头顶有一个面板呈现人物图标 2. 有一个摄像机在主角头顶!(Target Textur ...

  4. 【转】超简单利用UGUI制作圆形小地图

    http://sanwen.net/a/ithhtbo.html 由于UI都是Achor自己用PS做的,比较粗糙,大家见谅,不过丝毫不影响功能的实现,下面我们看看今天的笔记: 首先我们看看需要哪些组件 ...

  5. Unity3D_(游戏)2D简单游戏制作过程:捕获高空掉落保龄球

      游戏介绍:通过鼠标的左右移动,可以控制帽子的移动,当帽子接到下落的保龄球时,会出现火花效果.没有接到保龄球时,保龄球落到草地上,过10S后会自动消失. 实现效果: 素材+Unity3D源代码:传送 ...

  6. Jquery插件的使用及制作插件

    常用插件 插件:jquery不可能包含所有的功能,我们可以通过插件扩展jquery的功能. jQuery有着丰富的插件,使用这些插件能给jQuery提供一些额外的功能. jquery.color.js ...

  7. Unity3D 制作右上角小地图

     一个简单的方法, 首先先在俯视图视角截取一张图片,用作小地图的背景图片.然后新建一个Plane,把截图附到Plane上,然后把Plane与刚才截图的场景的相应位置重合,要尽量重合,当做地图.(见 ...

  8. 使用PrerenderSpaPlugin预渲染插件没有成功渲染

    问题 在已有vue项目里使用prerender-spa-plugin插件时,遇到了build出来的页面是白屏或者出现{"statusCode":404,"error&qu ...

  9. Unity3D_(插件)DOTween动画插件

    使用DOTween动画插件来实现物体的移动动画 Learn 一.DOTween插件对变量的动画 二.控制Cube和UI面板的动画 三.动画的快捷播放方式 四.动画的前放和后放 五.From Tween ...

随机推荐

  1. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  2. Fire Net(HDU-1045)(匈牙利最大匹配)(建图方式)

    题意 有一个 n*n 的图,. 代表空白区域,X 代表墙,现在要在空白区域放置结点,要求同一行同一列只能放一个,除非有墙阻隔,问最多能放多少个点 思路 只有在墙的阻隔情况下,才会出现一行/列出现多个点 ...

  3. shiro配置学习

    一.shiro的配置 1.shiro的web过滤 实例化ShiroFilterFactoryBean 设置securityManager.loginUrl.unauthorizedUrl.sucess ...

  4. Chrome中的插件运用

    1. Postman Java后台开发RPC,还没有没有开始和前端联调,只是想自测下这个RPC,但是有时候RPC的访问入参数据量很大,远远超过get方式访问2k(大多数浏览器通常都会限制url长度在2 ...

  5. 多线程编程-- part5.1 互斥锁之公平锁-获取锁

    基本概念 1.AQS:AbstractQueuedSynchronizer类 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现.AQS是独占锁(例如,ReentrantLock ...

  6. Hbase1.4.9的安装

    HBase介绍 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HB ...

  7. DedeAMPZ配置php的curl扩展

    DedeAMPZ配置php的curl扩展  curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, ...

  8. ffmpeg3.3.2命令行参数笔记

    组成: 1.libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxers和muxer库: 2.libavcodec:用 ...

  9. linux 常用指令汇总

    新用户的一些操作: 查看当前用户:who am i(可以看到是否是伪终端)/也可以是whoami 添加用户:sudo adduser ..(用户名)..(此时创建的用户并未加入sudo组所以并不具有至 ...

  10. jq事件操作汇总

    bind()        向匹配元素附加一个或更多事件处理器blur( )        触发.或将函数绑定到指定元素的 blur 事件change()        触发.或将函数绑定到指定元素的 ...