NO.6——Unity3D中两种绘制小地图的方法

2023-11-20

         在玩游戏时,你经常会发现,在游戏窗口的右上角或者左下角通常会有一个小地图,里边实时反馈角色的移动信息甚至是世界地图,那么这个小地图是如何绘制的呢?

         我目前掌握了两种方法:一种是以GUI方法重新绘制一个小窗口;另一种是新建一个正交投影的摄像机机。

         一、GUI绘制小窗口方法

        就是按照游戏场景等比例绘制一个小窗口,定义一个小方块代表游戏角色,跟随游戏场景中的角色一起移动,后期如果想要制作更加精细,可以附加精美的贴图。其中一个要注意的问题是避免越界,在这里,处理越界的机制比较简单,当发生越界,便回到边界位置。太晚了,实在不想敲代码,附上以前整理的笔记:

         

             二、新建正交投影的摄像机

         从美术角度来说,常用到的透视方法有焦点透视和散点透视。像追求大气磅礴意境的中国山水画,采用的就是散点透视,北宋画家郭熙在其著名论著《林泉高致》中提出“高远、平远、深远”三远法。区别于西方绘画中的焦点透视法。其透视规则同样遵从近大远小,但是与西方绘画不同的是,西方绘画注重画面中的一个观察角度的空间纵深,通常只有一个消失点,也就是从人的肉眼角度出发,而中国画中的空间纵深处理往往具有多个消失点,同时也自然具有多个观察角度,所以是写意的风格。

          在Unity3D里,还提供了一种正交投影的相机(Orthographic),所谓正交投影,也叫平行投影,区别于以上两种基于“近大远小”的投影方法,物体的大小和距离无关,通常在制作2D游戏的时候会把摄像机勾选此选项。

           在小地图的绘制中,我现在假想在场景上方放置一台正交投影的摄像机俯视游戏场景,然后给游戏场景中的角色上附加一个物体,并设置独立的Layer,使得在正交投影相机中只能看到该Layer层的物体,那么小地图是否就可以这样做。

          主要做法:

          创建一个球体,命名为dummy,设置材质为红色,作为敌人的替代物,它只能被正交投影的相机看到,不能被主相机看到,将它的Sphere Collider取消,只需要它的显示功能。

           创建一个新的Layer,命名为dummy,设置该球体的Layer为dummy,将球体置于敌人的Prefab的层级下,使其能够跟随敌人移动。

           选择主摄像机,在Culling Mask(按层渲染)取消显示dummy层;选择正交投影相机,选择只显示dummy层和level层(墙壁、地面所在的层,由我自己定义的),那么正交投影相机只能看到场景和球体。

            使用同样方法给主角创建一个替代物,那么小地图就创建完成。

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);
	}
}

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NO.6——Unity3D中两种绘制小地图的方法 的相关文章

  • 树实现客户端红点系统

    树实现客户端红点系统 红点系统总览 demo 设计 代码设 引用 https zhuanlan zhihu com p 85978429 红点系统总览 如上图所示 规划红点系统的时候 我们将整个系统分为独立的三个部分 结构层 驱动层和表现层
  • Unity UGUI的RawImage(原始图片)组件的介绍及使用

    Unity UGUI的RawImage 原始图片 组件的介绍及使用 1 什么是RawImage组件 RawImage是Unity UGUI中的一个组件 用于显示原始图片 与Image组件不同 RawImage可以直接显示原始图片的像素数据
  • URP——后期处理特效

    通用渲染管道 URP 包括一个后处理效果的集成实现 如果使用URP 则不需要为后期处理效果安装额外的包 URP与Post Processing Stack v2包不兼容 URP使用体积框架进行后期处理效果 下面的图片显示了一个URP场景有没
  • unity中通过touch旋转、放大和缩小物体以及滑动方向的判断

    unity中通过touch旋转 放大和缩小物体以及滑动方向的判断这个需求在游戏开发中也是非常频繁 话不多说直接上代码 using System Collections using System Collections Generic usi
  • Unity_场景之间的跳转

    跳转场景之前 需要在 File gt Build Settings gt Add Open Scenes 或者 直接把 场景 拖拽进来 跳转场景方法1 已过时 跳转场景方法 public void OnStartGame string Sc
  • 《Unity Shader入门精要》彩图版免费分享~~~~~

    这书很多地方都要币或者要钱 这里就免费分享了 下面是网盘链接 顺手点个赞或者评论一波呗 下载链接 链接 https pan baidu com s 137Y1nkB6h8HIvKOfwFPnbQ 提取码 f8dw 顺手点个赞 蟹蟹蟹蟹
  • Vuforia Virtual Button(虚拟按钮)使用技巧

    最近一直在摸索Vuforia的使用 Virtual Button算是一个比较容易吸引人眼球的功能 在经过一些测试后 我来总结下自己在探索过程中得到的一些经验 1 如何新建一个Virtual Button工程 导入Vuforia sdk 后把
  • untiy的纹理格式介绍

    Desktop RGB Compressed DXT1 压缩的RGB纹理 这是最常见的漫反射纹理格式 4位 像素 32 KB 256x256 RGBA Compressed DXT5 压缩的RGBA纹理 这是漫反射和高光控制纹理的主要格式
  • HLSL 偏导数 ddx / ddy

    HLSL ddx ddy 在光栅化的时刻 GPUs会在同一时刻并行运行很多Fragment Shader 但是并不是一个pixel一个pixel去执行的 而是将其组织在2x2的一组pixels分块中 去并行执行 偏导数就正好是计算的这一块像
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • RAIN{INDIE} 自动寻路

    Unity游戏中有较多的自动寻路插件 看过几个 大同小异 而RAIN中的Behavior Tree感觉很好 听名字就知道很条理 下面 就用它做个简单的寻路小例子 首先 导入RAIN的包 结构如下 在使用的过程当中还会产生几个文件夹用来存放E
  • unity 读取和写入Excel中文出现乱码解决方法

    在编辑器中读取和写入中文一切正常 发布出来只要是中文就会出现乱码 解决方法 将C Program Files Unity Editor Data Mono lib mono unity 目录下的I18N dll和I18N CJK dll复制
  • 【Unity灯光与渲染技术】Global Illumination全局光照

    本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering 同时会加上一点个人实践过程和理解 分割线 这篇文章主要讲全局光照 在看教程的时候就有一个点不是很理解 就是作者开启物体的static这个选项
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity中UI组件

    一 Canvers 画布组件 Canvers下面是添加Button和Image组件 Rect Transform 1 Position 坐标位置 2 Width Height 高宽尺寸 3 Anchors 锚点 4 Pivot中心点 即UI
  • Unity在UI界面上显示3D模型/物体,控制模型旋转

    https blog csdn net ChinarCSDN article details 81058773
  • 在 XNA 中使用 CreateOrthographicOffCenter

    我正在尝试弄清楚如何在 XNA 中绘制图形 其他人建议了这一点 但在我尝试使用这个之前 如果我创建并使用此相机 并将 LEFT TOP 设置为 0 且 WIDTH 256 和 HEIGHT 240 我渲染到屏幕上的任何内容都将使用这些坐标吗
  • 正交相机并通过光线投射选择对象

    我在使用光线投射器使用正交相机选择对象时遇到了一些困难 不过 当我使用透视相机时 我没有任何问题 在两者之间切换时 我唯一要改变的是相机类型 我可以在正交视图上选择面 但它仅与我在屏幕上单击的位置松散相关 当我可以在远离物体的地方点击时 它
  • 在正投影中绘制世界地图给出“非有限点”

    我有一个世界国家的形状文件 从下载here http thematicmapping org downloads TM WORLD BORDERS 0 3 zip 我可以使用 R 在 R 中绘制它 countries lt readOGR

随机推荐