博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Unity3d]小地图的制作
阅读量:6849 次
发布时间:2019-06-26

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

继续今天的学习心得,unity中小地图的制作,实现了小地图中红色小箭头代表场景中的主角,然后人物方向的转变,小地图中箭头也随之改变方向。

效果图                                                                                                                         


右上角就是小地图,上面有个红色小箭头就是代表主角人物所在场景中的位置,箭头的方向就代表人物所面向的方向。

实现步骤                                                                                                                     

1.俯视图的制作

首先,我们将Scene场景调成俯视的角度

然后在创建一个Plane,然后点击该对象,在Inspector属性窗口将MeshRenderer取消,

并且在场景中会发现有绿色的网格,


然后记录网格所在的位置,并且取消MeshCollider,用截图工具截取这网格所在的位置,截出一张一模一样大小的图片,这就是我们小地图的来源。截取好了之后记得将MeshCollider勾选上,后面会在代码中需要计算人物所在的位置,也就正是通过这网格文件来计算的。

2.代码的编写

using UnityEngine; using System.Collections;  public class map : MonoBehaviour {      public Texture map1;//小地形图       public Texture jueseTexture;//标识角色的图片       float juesePosX = 0;     float juesePosY = 0;     public GameObject player;//角色       public GameObject plane;//地形       float planeWidth;//地形的宽       float planeHeight;//地形的高        float angle = 0; //人物旋转的角度      void Start()     {         //获取地形的宽高           planeWidth = plane.GetComponent
().mesh.bounds.size.x * plane.transform.localScale.x; planeHeight = plane.GetComponent
().mesh.bounds.size.z * plane.transform.localScale.z; print("width+heith:"+planeWidth + ", " + planeHeight); print("bounds:" + plane.GetComponent
().mesh.bounds); } void OnGUI() { GUI.DrawTexture(new Rect(Screen.width-map1.width, 0, map1.width, map1.height), map1); GUIUtility.RotateAroundPivot(angle, new Vector2((Screen.width - map1.width)+juesePosX + 5, juesePosY + 5)); GUI.DrawTexture(new Rect((Screen.width - map1.width)+juesePosX, juesePosY, 10, 10), jueseTexture); } void Update() { print("people:" + player.transform.position.x + "," + player.transform.position.y); print(1); //根据palyer在plane的比例关系,映射到对应地图位置。 juesePosX = map1.width * player.transform.position.x / planeWidth + map1.width / 2; juesePosY = map1.height * (-player.transform.position.z) / planeHeight + map1.height / 2; print("x:" + juesePosX + "y:" + juesePosY); angle = player.transform.eulerAngles.y-90; print("angle:" + angle); } }
将该脚本拖放到Plane上,参数说明:JueseTexture是指小地图中箭头的图片,Player是人物模型的Controller,Plane是指当前带网格的Plane,Map1是指小地图的图片。

当然还有一种KGFMapSystem的插件,用来制作小地图就更炫更专业了,这里只是一个粗糙的小地图。你也可以尝试用一下更专业的插件来开发。
更专业的插件开发小地图请看:

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

 

转载请注明出处:

本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366134,如需转载请自行联系原作者
你可能感兴趣的文章
Leangoo背景更新-看板背景任你选!!!
查看>>
FFmpeg编解码处理1-转码全流程简介
查看>>
初始angular框架(2)
查看>>
模式识别 之 BP算法 (二)
查看>>
安装kali linux 到虚拟机总结
查看>>
4.一对多关联映射
查看>>
final与static
查看>>
Linux - 常用网络操作
查看>>
数学分析原理 定理 6.5
查看>>
Software-Defined Networking A Comprehensive Survey --阅读_day1
查看>>
数据库常用查询
查看>>
谈谈接入各种第三方推送平台的技术方案和一点经验
查看>>
第20件事 风险分析
查看>>
今天做首字母查询功能时调用的一个函数
查看>>
【JDK1.8】JUC.Lock综述
查看>>
初识PCA-主成分分析
查看>>
C# EF中调用 存储过程并调回参数
查看>>
C# Azure-让http自动跳转到https链接
查看>>
第三周作业
查看>>
JVM指令集介绍
查看>>