今天我们来讲一下在Unity3D中怎样实现小地图。首先,我们来一起看看终于实现的效果:

要实现小地图效果,须要实现对于小地图和角色的绘制,所以这里须要用到OnGUI()方法,我们一起来看代码:

  1. using UnityEngine;
  2. using System.Collections;
  3. public class CameraScript : MonoBehaviour {
  4. //定义小地图贴图
  5. public Texture MapTexture;
  6. //定义角色标志贴图
  7. public Texture PlayerTexture;
  8. //定义第三人称角色控制器
  9. private GameObject m3rdPersonControl;
  10. public GameObject BulletPos;
  11. public GameObject Bullet;
  12. //定义角色位置
  13. private float mPersonX;
  14. private float mPersonZ;
  15. //定义缩放比例
  16. private float mScale;
  17. void Start ()
  18. {
  19. //获取角色控制器
  20. m3rdPersonControl=GameObject.Find("3rd Person Controller");
  21. //获取角色位置
  22. mPersonX=m3rdPersonControl.transform.position.x;
  23. mPersonZ=m3rdPersonControl.transform.position.z;
  24. //依据小地图和屏幕计算缩放比例
  25. mScale=(200F/Screen.width)<(200F/Screen.height)?(200F/Screen.width):(200F/Screen.height);
  26. }
  27. void Update ()
  28. {
  29. //刷新角色位置
  30. mPersonX=m3rdPersonControl.transform.position.x;
  31. mPersonZ=m3rdPersonControl.transform.position.z;
  32. if(Input.GetMouseButtonDown(0))
  33. {
  34. Vector3 Target=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, 1));
  35. Vector3 Dir=Target-m3rdPersonControl.transform.position;
  36. Instantiate(Bullet,BulletPos.transform.position,Quaternion.identity);
  37. }
  38. }
  39. void OnGUI()
  40. {
  41. //在屏幕右上角绘制200x200的小地图贴图
  42. GUI.DrawTexture(new Rect(Screen.width-200,0,200,200),MapTexture);
  43. //以小地图左下角为原点的右手系,角色标示宽度和高度为20
  44. GUI.DrawTexture(new Rect(Screen.width-200+mPersonX*mScale+20,200-mPersonZ*mScale-20,20,20),PlayerTexture);
  45. }
  46. }

在上述代码中,我们设定小地图的宽度和高度均为200。设定角色标示物的宽度和高度均为20,并规定地图向上为正北方向。

我们在初始化方法Start()方法中获取一个角色控制器,以获取角色的位置,并依据小地图和屏幕计算出缩放比例。在OnGUI()方法中我们依据缩放比例来绘制小地图和角色标示物。

而在Update()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!

转载,本文出处:原文出处

Unity3D游戏开发之小地图的实现的更多相关文章

  1. [Unity3D]Unity3D游戏开发之怪物AI

    大家好.欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章,我的博客地址为:http://blog.csdn.net/qinyuanpei.        在上一篇文章中,我们基本上实现了一个 ...

  2. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  3. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  4. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  5. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  6. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  7. [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪

    朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...

  8. [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版

    大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...

  9. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

随机推荐

  1. 【原创】ASP.NET Web开发,实现打印Log日志,步骤详解

    添加Log需要四步: 一.引用log4net.dll,详见附件:http://pan.baidu.com/s/1c0hab2g 二.项目根目录下,添加 log4net.xml <?xml ver ...

  2. Hibernate中,left join、inner join以及left join fetch区别(转)

    标签: hibernate hql inner join left right 杂谈 分类: SQL 原文地址:http://m33707.iteye.com/blog/829725 Select F ...

  3. AOP annotation

    1.xml文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http ...

  4. sping+maven+mybatis+ehcache续之实现mapper

    配置接着上一篇文章 新建UserMapper.java和UserMapper.xml 其中UserMapper.xml的namespace以及文件名要和UserMapper.java一致 <ma ...

  5. 磁盘IO子系统学习资料

    1.http://www.ibm.com/developerworks/cn/linux/l-cn-read/    (IBM read系统调用剖析) 2.http://lenky.info/arch ...

  6. ftp一些东东

    ftp如果绑定域名 登录时登录名应该写成 域名|用户名

  7. VB6.0快捷键大全(转)

    窗体设置,控件布局时用: alt+v+x可以快速显示出工具框 Alt+P+N 引用 ctrl+左右键头可以移动控件 shift+左右键头调整控件大小 F7   切换到编辑窗口 Shift+f7 切换代 ...

  8. 模拟美萍加密狗--Rockey2虚拟狗(三)

    几经挣扎,我最终还是选择了虚拟设备的方法来模拟Rockey2加密狗.HID.DLL劫持+API劫持的办法技术上虽然简单些,但太繁琐了,不仅要转发大量的函数,还要Hook好几个API,向我这么懒的人可干 ...

  9. Qt中QPushButton、QTabWidget等部件内容文字换行的解决方法(一定要写在源码里,写在翻译文件里不行,因为\n得不到转义)

    最近在做基于Qt的应用项目,其中有一个按钮文字超长,需要换一行显示.从网上找到的建议都是将要显示的内容做成图片,然后将图片设置为该按钮的背景.但是这样做有一个很大的局限性,当需要更改内容文字的时候,需 ...

  10. JAVA GUI学习 - JTable表格组件学习_C ***

    /** * JTable高级应用 * @author Wfei * */ public class JTableKnow_C extends JFrame { JTable jTable; MyJMe ...