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中两种绘制小地图的方法 的相关文章

  • Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C Classes for Behaviours Custom Classes 1 Custom Classes 2 Serialized Custom Class RPG Item Database Example 3 When
  • Unity3D方向键控制人物移动的代码

    代码 var v Input GetAxis Vertical var h Input GetAxis Horizontal transform Translate transform forward Time deltaTime move
  • 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
  • Unity3D射线检测

    射线检测主要用于像子弹是否打中物体 捡取物品等情况 本来面向百度想找例子看看 不过没找到合适的 还是自己总结尝试吧 以下测试Unity3D版本 2017 4 2f2 射线的检测步骤如下 1 Ray 这个类为了产生一个射线 如果我们想要场景中
  • Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换

    Cinemachine在2017版中正式加入 结合Timeline可以轻松的制作出一下相机动画 相比Unity自带的标准相机 这个Cinemachine插件可操作的变量更多 不同虚拟相机 用来控制相机的 可以平滑转换等 具体可以参考上篇 U
  • Unity编辑器界面概述

    了解界面 如果您对编辑器界面没有非常地了解 那么请花一些时间查看并熟悉 Editor 编辑器 界面 Editor 主窗口由选项卡式窗口组成 这些窗口可重新排列 因此 Editor 的外观可能因项目或者开发者而异 具体取决于个人偏好 Wind
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • 游戏开发unity编辑器扩展知识系列:一个方法添加至多个MenuItem

    代码如下 用多个MenuItem标记方法就可以了 MenuItem GameObject 生成带图片的Image false 100 MenuItem Assets 生成带图片的Image static void GenImageGameO
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • unity 读取和写入Excel中文出现乱码解决方法

    在编辑器中读取和写入中文一切正常 发布出来只要是中文就会出现乱码 解决方法 将C Program Files Unity Editor Data Mono lib mono unity 目录下的I18N dll和I18N CJK dll复制
  • Unity_如何使相机视角一直跟随角色移动

    实例代码如下 using System Collections using System Collections Generic using UnityEngine 相机视角跟踪 public class FollowTarget Mono
  • Unity动画系统详解5:BlendTree混合树是什么?

    摘要 Animator中有一个功能 用来解决多个动画之间的混合 经常用于移动动画之间的混合 这个功能叫做BlendTree 混合树 洪流学堂 让你快人几步 你好 我是跟着大智学Unity的萌新 我叫小新 这几周一起来复 yu 习 xi 动画
  • Unity3D之Rigidbody

    目录 常用的Rigidbody属性和方法 rigidbody AddForce rigidbody AddTorque rigidbody velocity rigidbody angularVelocity rigidbody Sleep
  • unity中的一些快捷键(齐)

    重命名的快捷键是F2 ALT 鼠标左键点击Hierarchy对象可以展开和收起对象的所有子物体 SHIFT 空格 可以对当前窗口进行放大缩小
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • Mecanim Any State

    Any State表示任意状态 任意状态是 一个一直存在的特殊状态 他的存在是为了保证你在无意转移至某个你当前正处于的特殊状态而准备的 为你的状态机中的每个状态设置相同的对外转移是一个快捷的方式 假如有Walk Run Fly Die这四个
  • NO.6——Unity3D中两种绘制小地图的方法

    在玩游戏时 你经常会发现 在游戏窗口的右上角或者左下角通常会有一个小地图 里边实时反馈角色的移动信息甚至是世界地图 那么这个小地图是如何绘制的呢 我目前掌握了两种方法 一种是以GUI方法重新绘制一个小窗口 另一种是新建一个正交投影的摄像机机
  • 在 XNA 中使用 CreateOrthographicOffCenter

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

随机推荐