在绝大多数游戏中,小地图都是极为常见的一个模块而且十分重要。在Unity里面如何制作一个地图其实也是比较简单的

一. 创建玩家与敌人

创建一个Capsule,命名为Player,代表我们的游戏玩家,创建两个Cube,分别命名为EnemyA,EnemyB,代表敌方两个NPC

二. 创建摄像机

创建摄像机,命名为Mini Cam,并置于模型上方适当位置处,X轴旋转90°产生俯视视觉效果,Project调整为Orthographic,Size根据各人具体情况来进行调整

三. 创建UI显示效果

①在 Assets -> Create -> RenderTexture 创建一个RenderTexture,命名为MiniMap,并将其赋值给第二步创建的Mini Cam的Target Texture。

②创建一个Raw Image,并将MiniMap赋值给RawImage的Texture,并把RawImage置于屏幕右上角,就可以看到初步效果了

③为了更明显的显示效果,创建两个Material,一个调成蓝色,赋值给Player,另一个调成红色赋值给两个Enemy。然后给Player和两个Enemy的Layer设置成MiniMap。再把Mini Camde 的Culling Mask调整成只显示MiniMap层

效果如下

四. 让角色随机移动,观察效果

创建一个C#脚本,并给角色和敌人都加上此脚本和刚体。运行,观察效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class RandomMove : MonoBehaviour { private Vector3 velocity = Vector3.zero;
private float speed = 8;
private Vector3 target = Vector3.zero;
private void Update()
{ if (Random.value < 0.01f)
target = transform.position + Quaternion.Euler(0, Random.value * 360, 0) * Vector3.right * 10;
Vector3 direct = target - transform.position;
direct.y = 0; //防止y方向移动
if (direct.sqrMagnitude > 1)
{
transform.rotation = Quaternion.LookRotation(direct); //改变朝向
velocity = direct.normalized * speed / 3;
} velocity -= transform.GetComponent<Rigidbody>().velocity;
velocity.y = 0; //速度过大时减速
if (velocity.sqrMagnitude > speed * speed)
velocity = velocity.normalized * speed; transform.GetComponent<Rigidbody>().AddForce(velocity, ForceMode.VelocityChange);
velocity = Vector3.zero;
}
}

五. 总结

其实制作小地图的整个流程并不复杂,原理上和放大镜都是应用了RenderTexture和摄像机的渲染,只要了解Unity中摄像机渲染的相关事项,整个操作过程就会变得十分简单明了。有兴趣的朋友,可以给小地图多加一张Mask,让其更像一个小地图。

【UGUI】 (二)--------- 小地图的更多相关文章

  1. Unity3D 之UGUI制小地图

    这里使用UGUI制作一个小地图. 方法一: 第一步:使用UGUI弄一个地图背景和人物指针 第二步:脚本获取人物的位置和角度给人物指针进行同步 将 PlayerIconController.cs 文件绑 ...

  2. 【转】UGUI(小地图的实现)与游戏关卡选择的简单实现

    http://www.jianshu.com/p/68637029e9df 游戏中小地图的实现(场景用简单Cube组成先搭建如下图场景,真实场景实现方法也是一样) 图1-1小地图效果图 1.创建好场景 ...

  3. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  4. uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/42705885 ...

  5. 【转】(二)unity4.6Ugui中文教程文档-------概要-UGUI Canvas

    原创至上,移步请戳:(二)unity4.6Ugui中文教程文档-------概要-UGUI Canvas UI系统允许您快速.直观地创建用户界面(Ui).这是Unity的新 UI 系统的主要功能介绍. ...

  6. UGUI的优点新UI系统二 直观、易于使用

    UGUI的优点新UI系统二 直观.易于使用   对于UI控件,开发者可以直接使用鼠标在Scene视图里编辑它们的大小.位置和旋转角度,而无需编写任何代码,以Button为例,如图1-3.图1-4和图1 ...

  7. uGUI练习(二) Animate UI

    练习目标 通过Animation录制UI动画 一.步骤 1.创建一个Panel,下面再创建两个子Panel 2.修改Canvas的 Render Mode为Screen Space-Camer 3.为 ...

  8. Unity3D之UGUI学习笔记(二):Rect Transform与Anchor

    Rect Transform 我们都知道,Unity3D中所有的GameObject都必须要携带一个Transform组件,且该组件无法移除,那么作为UI显示的GameObject则不是携带Trans ...

  9. DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)

    UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这 ...

随机推荐

  1. Linux下一种简单易行的cpu benchmark方法

    用Linux自带的bc计算器计算pi值的一种benchmark手段   其实很简单,就是一行命令. time echo “scale=5000; 4*a(1)” | bc -l -q time是计时程 ...

  2. 用javascript调用表单验证事件时,为什么return false了还是把表单submit了?

    表单提交前,都会有定义一个验证的方法以对用户提交的内容进行限定,今天写到了这个,但出现了一个好郁闷的东西,就是一点提交了,调用我自己写的一个CheckForm()方法时,我明明写了return fal ...

  3. Android——sqlite3 基本命令操作

    平时用到database的地方不多,这里记录一下shell终端下直接对db的基本操作! 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details ...

  4. ./redis-trib.rb 报错:/usr/local/rvm/gems/ruby-2.4.2/gems/redis-4.0.1/lib/redis/client.rb:119:in `call': ERR Slot 0 is already busy (Redis::CommandError)

    错误提示是 slot插槽被占用了(这是 搭建集群前时,以前redis的旧数据和配置信息没有清理干净.) 解决方案是 用redis-cli 登录到每个节点执行  flushall  和 cluster ...

  5. springmvc找不到对应的requestmapping

    1.检查注解的是否正确. 2.检查配置文件中是否是否正确配置了扫描类. 3.如果上述都正确但还是无法找到对应的mapping,打开tomcat所在的文件夹下的webapp中该项目WEB-INF目录,找 ...

  6. iOS:UITableView相关(18-10-20更)

    UITableView用得较多,遇到的情况也较多,单独记录一篇. 一.零散的技巧 二.取cell 三.cell高度 四.导航栏.TableView常见问题相关 五.自定义左滑删除按钮图片 六.仅做了解 ...

  7. The number of sections contained in the collection view after the update (1) must be equal to the number of sections contained in the collection view before the update (0), plus or minus the number of

    现象:当删除CollectionView 当中的某个section的时候,报上面的错误 初步分析:当前CollectionView删除前后都不止一个Section,怎么会报那样的错误:猜想可能是相册界 ...

  8. Field userService in com.wuji.controller.UserController required a bean of type 'com.wuji.service.UserService' that could not be found

    Field userService in com.wuji.controller.UserController required a bean of type 'com.wuji.service.Us ...

  9. Angular7教程-06-页面与数据交互

    1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...

  10. [上架] iOS 上架更新版本号建议

    iOS 上架一個新版本号,就改个版号数字就好,有什么好说的? 是啊~ 如果上架顺利的话,就没什么好说的,如果被退件,再上传更新时,那版号怎么改? 下面说说我的做法(这只是建议,版号随自己喜好,没有固定 ...