Unity实战篇:MOBA游戏小地图制作(一:小地图的创建以及人物同步)

在许多游戏里,我看到都有小地图这个模块,对于玩家而言很友好,所以今天研究一下。

本人能力有限,利用CustomRenderTexture实现。

环境:Unity2018.2.13f1

Demo下载:https://download.csdn.net/download/qq_15020543/10765062

(如果没有积分就加我好友,我用QQ发你)

先简单的说一下基本流程。

  1. 创建一个相机,用来监视主角(或者地图全局)的移动。
  2. 创建CustomRenderTexture,用来接收相机传来的图像。
  3. 创建小地图UI(RawImage),将CustomRenderTexture设为材质。

接下来我们来实现。

1.在Hierarchy新建一个Camera,命名为MapCamera

2.在Project新建CustomRenderTexture,命名为MapMirror

3.新建一个MiniMap层,用来限制相机渲染的范围,否则会造成大量不必要的Batches

随便找一个游戏物体

4.找到第一步创建的MapCamera,将ClearFlag设置为Solid Color,将相机渲染模式设置为正交(避免因为距离原因显示出现误差),把Culling Mask设为MiniMap层,把Target Texture设为刚刚创建的MapMirror

5.在需要在地图上投影的游戏物体下面加上Quad命名为HeroIcon,作为他在地图上的图标

将HeroIcon绕X轴旋转90度,Y设为10(保证在人物头顶)

新建一个材质球命名为HeroIconMaterial,移动到HeroIcon下的Materials里

把准备好的图片拖到空白处

6.创建小地图

创建Image命名为MapMask并增加Mask组件,作为遮罩(一旦元素出了遮罩,就不显示)

创建RawImage命名为Map并作为MapMask子物体,将Texture设为MapMirror,作为地图。

将MapMask锚点设为左上角。

7.设置层级

8.运行效果

基本的操作就是这样,下一篇我们进行精细化操作,如果大家看到这里感觉比较晕,不要慌,接着往下看,最后我也会把工程源码上传,不要慌啦~

 

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
制作一个平滑小地图,需要利用地图缩略图和相机来实现。 1. 首先,需要创建一个地图缩略图。可以通过截取游戏场景中的地图创建缩略图。使用RenderTexture将相机拍摄到的画面渲染到一张纹理上,然后将这张纹理缩小成一个小地图。 2. 然后,需要将相机移动到一个固定位置,以便拍摄到整个地图。设置相机的orthographicSize属性来调整相机的视野大小。可以根据地图的大小和分辨率来计算出相机的orthographicSize。 3. 将小地图渲染到一个GUI贴图上。可以使用OnGUI函数绘制GUI元素,并将小地图渲染到GUI贴图上。 4. 将小地图显示在游戏界面上。可以将GUI贴图渲染到一个矩形框内,然后将这个框放置在游戏界面的一个固定位置。 下面是一个示例代码,用于实现一个平滑小地图: ``` using UnityEngine; public class MiniMap : MonoBehaviour { public Camera miniMapCamera; public RenderTexture miniMapTexture; public Rect miniMapRect; void OnGUI() { // 绘制小地图 GUI.DrawTexture(miniMapRect, miniMapTexture); // 绘制视口框 Rect vpRect = miniMapRect; vpRect.x += miniMapCamera.rect.x * miniMapRect.width; vpRect.y += miniMapCamera.rect.y * miniMapRect.height; vpRect.width *= miniMapCamera.rect.width; vpRect.height *= miniMapCamera.rect.height; GUI.Box(vpRect, ""); } } ``` 在这个示例中,我们使用miniMapCamera来拍摄整个地图,将拍摄到的画面渲染到miniMapTexture上,然后将miniMapTexture渲染到miniMapRect所代表的矩形框内。我们还绘制了一个视口框,用来表示玩家当前所在的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值