Unity3D游戏开发之小地图的实现

简介:

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

     

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

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

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

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

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





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5179497.html,如需转载请自行联系原作者

相关文章
|
1月前
|
数据可视化 vr&ar 开发工具
Unity游戏开发引擎是什么?有哪些优点
Unity引擎是一款由Unity Technologies开发的跨平台游戏开发引擎,广泛用于创建2D和3D游戏以及其他交互式内容,如虚拟现实(VR)和增强现实(AR)应用程序。
31 3
|
1月前
|
vr&ar 开发工具 图形学
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
|
8月前
|
vr&ar 开发工具 图形学
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
|
存储 图形学 Android开发
【游戏开发】使用unity创建2D游戏
Unity是一种非常强大的游戏引擎,可以帮助你创建各种类型的游戏,包括2D游戏。在本文中,我们将教你如何使用Unity创建2D游戏。首先,你需要确保你已经下载并安装了最新版本的Unity。如果你还没有安装Unity,可以从官方网站下载免费的Unity Hub来管理你的Unity版本。
408 0
|
图形学
【游戏开发】unity透明特效的制作方法
Unity是一种强大的游戏开发引擎,它支持许多不同的特效和图形效果。其中一种常用的特效是透明特效,它可以使游戏中的材质变得半透明或完全透明。在本文中,我们将介绍如何使用Unity创建透明特效。
575 0
|
JavaScript 前端开发 vr&ar
【游戏开发】unity入门教程
Unity是一款非常受欢迎的游戏引擎,它可以用于开发2D和3D游戏以及虚拟现实和增强现实应用程序。如果你是一个刚开始接触Unity的开发者,这篇教程将为你提供一些有用的指导。
234 0
|
iOS开发 MacOS Windows
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
562 0
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
|
人工智能 图形学
游戏开发初级之游戏对象和组件关系(Unity3D)
Unity是一个基于组件的游戏引擎。本文将解释这是什么以及如何有效地使用它。
|
XML 图形学 数据格式
Unity3d游戏开发之使用AssetBundle和Xml实现场景的动态加载
在Unity3D游戏开发过程中,因为受到游戏容量、平台性能和热更新等诸多因素的限制,我们可能无法将所有的游戏场景打包到项目中然后相对”静态”地加载,那么这个时候就需要我们使用动态加载的方式来将游戏场景加载到场景中。
1274 0
|
图形学 机器人
带你读《Unity游戏开发(原书第3版)》之三:模型、材质和纹理
本书主要介绍Unity2018的使用和游戏开发流程中涉及的各种知识。每一章的结构特别清晰,先综述该章要介绍的内容,然后一步步深入讲解,中间穿插着很多动手做的实践操作,可以让读者加深对某个概念、方法的理解,每章的最后还有一个小测验和一个稍微大一点的实践练习,用于巩固该章的学习内容。