博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D游戏开发之小地图的实现
阅读量:6079 次
发布时间:2019-06-20

本文共 1680 字,大约阅读时间需要 5 分钟。

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

     

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

[csharp] 
  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,如需转载请自行联系原作者

你可能感兴趣的文章
计算机语言的基本理论
查看>>
nodejs流之行读取器例子
查看>>
批量文件重命名工具
查看>>
简单说一下UWP中的JumpList
查看>>
unity将object[]或者string对象转换成枚举enum
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.19. 范围函数和操作符...
查看>>
以太坊系列之六: p2p模块--以太坊源码学习
查看>>
使用scikit-learn解决文本多分类问题(附python演练)
查看>>
2018 年最值得关注的 JavaScript 趋势
查看>>
什么是区块链?超级账本 Brian Behlendorf 从五个方面教你认识
查看>>
Linux中的帮助功能
查看>>
【iOS-Cocos2d开发之三】CCScene切换的所有特效,以及设置屏幕横竖屏!
查看>>
针对Android的Pegasus恶意软件版本和针对iOS的有什么不同?
查看>>
STL容器总结
查看>>
[C#]游戏地图绘制——双玩家版
查看>>
博客开篇自传
查看>>
Vue2基础Api学习
查看>>
linux复制目录结构
查看>>
函数传值与传引用的理解
查看>>
防火墙的AAA认证
查看>>