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




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

         

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

    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()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!


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

  • 相关阅读:
    最小生成树之 Prim 算法
    Linux通过ps命令找到进程并kill当前进程
    M6G2C Cortex®A7工控核心板SIMCOM4G模块移植流程
    Spring事件监听机制源码解析
    Pytorch损失函数总结
    目标检测任务理解与总结
    [炼丹术]EfficientDet训练模型学习总结
    [炼丹术]DeepLabv3+训练模型学习总结
    可视化经典模型的对比实验总结
    基于COCO数据集验证的目标检测算法天梯排行榜
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5179497.html
Copyright © 2020-2023  润新知