zoukankan      html  css  js  c++  java
  • Unity3D制作类似吃鸡的小地图

    先看效果图:

    实现的效果就是右上角的一个小地图,会随着人物的移动而移动,显示人物的方向,并且可以展示地图设定范围的其他的玩家

    制作起来也很简单,不需要任何代码。主要原理就是先创建Render Texture,在角色正上方放置一台摄像机,将摄像机拍摄的画面置于Render Texture中,步骤如下:

    1. 创建Render Texture

      在Assets文件夹中选择create,创建Render Texture,命名为Map Render

    2.创建新的摄像机

      创建摄像机,命名为MiniMapCam,并将其Projection设置为正交模式 (Orthographic),并按自己的要求调整它的大小和高度等信息。  

    因为小地图只需要展示地图和玩家的标志,因此我们将其剔除遮罩 (Culling Mask)设置为地图层和玩家标志层(层可以在Layer中添加,并且将地图和玩家的layer设置为自己创建的层),这样就不会展示场景中的其他物体,同理主摄像机不应该渲染玩家标志

    调整完成后,再将其Target Texture设置为步骤1中创建的Render Texture,这样摄像机的画面就会渲染到RenderTexture中,而不是渲染到屏幕上

    具体设置如下如

    官方文档对Target Texture的解释为  :  将摄像机视图输出到指定的渲染纹理上,设置此引用将禁用此摄像机的渲染到屏幕功能。

    3.创建UI接收摄像机渲染的信息

      我们再创建一个Raw Image,将其Texture设置为步骤1中创建的Render Texture,设置完成后,可以看到Raw Image中的图片已经变成摄像机的画面了,将它调整到合适的大小和位置

    至此,小地图大致已经做完了,但为什么小地图中还是看不到玩家?因为我们还差最后一步

    4.创建一个Sphere表示小地图中的玩家

      我们创建一个小球,命名为MapMark,将其设置为玩家的子物体(效果图中我使用了两个Sphere,经过一些列的伸缩变换(小球扩大了很多倍,不然无法看清)、更改材质后形成了图中的效果),具体层级关系如下

     

     还需要将小球的碰撞器(Collider)去掉,并且将其Layer设置为你创建好的玩家标志层

    注: 如果想用图片表示,可以添加Quad,而不是Sphere,然后将它Mesh Render里面的Material设置为你想要的材质球

    事已至此,所有效果都应该出来了,但你还会发现,当人物移动时,小地图并不会进行跟随,所以我们还需要给摄像机添加一个Positon Constraint组件,并将其设置为Active,和玩家绑定(即在Source中添加玩家)

    小地图完成!

  • 相关阅读:
    vector容器
    CSS3文字与字体 text-overflow 与 word-wrap
    div 居中
    C# 邮件发送
    SD详解-销售过程
    js 常用
    finereport报表--动态格间运算 二
    finereport报表--动态格间运算 一
    CSS 渐变色
    CSS3 box-shadow 属性 紧跟在 -webkit-, -ms- 或 -moz-
  • 原文地址:https://www.cnblogs.com/forever-Ys/p/13490180.html
Copyright © 2011-2022 走看看