Unity 制作RPG地图2(自己控制地图上图标)
上一次用Unity摄像机方式实现了地图的制作,现在介绍另一种实现地图的方式: 自己通过代码实现小地图NCP图标的显示和隐藏
制作地图的步骤:
1. 根据游戏人物的3D坐标转换成2D平面坐标,根据距离显示和隐藏游戏的坐标
2. 怪物实时判断与玩家的距离,小于到移动范围,就在小地图上创建Icon的显示
注意事项:
1. 人物移动前进和后退是(x,z)轴, 我们从游戏界面看到的图标是(x,y)轴
代码:
小地图类:
using UnityEngine;
using System.Collections; /// <summary>
/// 小地图
/// </summary>
public class MinMap : MonoBehaviour { public static MinMap _instance;
public GameObject iconPrefab; //小图标预设,根据不同的名字显示不同的图标 void Awake()
{
_instance = this;
} /// <summary>
/// 在小地图添加图标
/// </summary>
/// <param name="iconName"></param>
/// <returns></returns>
public GameObject AddIcon(string iconName)
{
GameObject go = NGUITools.AddChild(this.gameObject,iconPrefab);
go.GetComponent<UISprite>().spriteName = iconName;
return go;
} }
Icon类: (在小地图上添加图标,交给怪物和NCP自身)
using UnityEngine;
using System.Collections; public class MinMapItems : MonoBehaviour { public string iconName;
private GameObject minimapIconGO;
private Transform minmapTrans;
private Transform playerTrans; public float magnitudeX = ;
public float magnitudeZ = 7.5f; void Start()
{
minimapIconGO = MinMap._instance.AddIcon(iconName); //将怪物图标初始化到小地图显示
minmapTrans = minimapIconGO.transform; //怪物的小图标
playerTrans = GameObject.FindGameObjectWithTag("Player").transform; //获取主角transfrom } void FixedUpdate()
{
Vector3 offset = transform.position - playerTrans.position;
minmapTrans.localPosition = new Vector3(offset.x,offset.z,) * ; //localPosition和position的区别 //怪物超过一定范围,显示和隐藏地图图标
if (Mathf.Abs(offset.x) >= magnitudeX || Mathf.Abs(offset.z) >= magnitudeZ)
{
minimapIconGO.SetActive(false);
}
else
{
minimapIconGO.SetActive(true);
} //Debug.Log(offset.z); } void OnDestroy()
{
Destroy(this.minimapIconGO);
} }
源代码 : http://yunpan.cn/cy8wW4eHQgHZH 提取码 3681
Unity 制作RPG地图2(自己控制地图上图标)的更多相关文章
- Unity 制作RPG小地图
效果图: 最近公司要制作小地图,搜索网上的文章没找到有什么小实例,=.=直接上步骤: 制作小地图步骤: 1. 人物头顶有一个面板呈现人物图标 2. 有一个摄像机在主角头顶!(Target Textur ...
- 【百度地图API】如何制作一张魔兽地图!!——CS地图也可以,哈哈哈
原文:[百度地图API]如何制作一张魔兽地图!!--CS地图也可以,哈哈哈 摘要: 你玩魔兽不?你知道如何做一张魔兽地图不?! 快来看此文吧! ---------------------------- ...
- Android百度地图开发03之地图控制 + 定位
前两篇关于百度地图的blog写的是,一些基本图层的展示 和 覆盖物的添加+地理编码和反地理编码. 接下来,这篇blog主要说一些关于地图控制方面的内容和定位功能. 百度地图提供的关于地图的操作主要有: ...
- 百度地图之UI控制
在本文中主要介绍百度地图UI控制功能,即控制地图是否有缩放.平移.双击放大.旋转.俯视的功能以及控制是否显示内置缩放组件.指南针位置等.在文中采用标签监听使每个控制功能的方法见名知义,代码原型来源百度 ...
- 【Silverlight】Bing Maps学习系列(三):如何控制地图
[Silverlight]Bing Maps学习系列(三):如何控制地图 本篇主要介绍如何对地图的一些常用控制操作,包括地图加载模式.根据精度和纬度定位.变焦程度等. 一.动态设置地图加载模式 在本系 ...
- 使用ESMap的地图平台开发三维地图
本文简单的介绍使用ESmap的SDK开发(DIY自己地图的)一个地图的过程.若有不足,欢迎指正. 一.创建地图 只需四步,从无到有,在浏览器中创建一个自己的三维地图,炫酷到爆! 第一步:引入ESM ...
- Unity制作地形的常用插件之GAIA
用Unity制作大型游戏少了地形制作怎么行,用原生的Unity工具制作地形效率较低而且也不甚美观,后期运行的效率也得不到保证.下面推荐的专业地形制作工具可以帮助开发者解决地形制作的相关问题. 打开Un ...
- 使用Unity制作游戏关卡的教程(三)
转自:http://gamerboom.com/archives/75593 作者:Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth>的关 ...
- 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图
原文:[高德地图API]从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...
随机推荐
- VMware+Ubuntu8.10+Skyeye+gdb实现u-boot源码调试
系统平台:WindowsXP 虚拟机: VMware Workstation 6.5.0 Ubuntu8.10 安装程序 ubuntu-8.10-desktop-i386.iso 下载地址:http: ...
- poj 3616 Milking Time(dp)
Description Bessie ≤ N ≤ ,,) hours (conveniently labeled ..N-) so that she produces as much milk as ...
- Linux各种包安装及命令
1.Locate yum -y install mlocate 若出现问题: locate: can not stat () `/var/lib/mlocate/mlocate.db': 没有那个文件 ...
- NYOJ17,单调递增最长子序列
单调递增最长子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf.长度为4 输入 第 ...
- OSX: 私人定制Dock默认程序图标
不论什么一个新用户第一次登陆后,OSX都会自己主动地在用户的Dock中列出系统默认的应用程序图标,这些图标随着OSX版本号的不同而不同. 系统管理员有的时候须要改变这些系统默认图标,或者加入自己的或者 ...
- Qt快速入门系列教程目录
Qt快速入门系列教程目录
- Qt使用异或进行加密解密
在加密,解密中,异或运算应该时比较简单的一种.下面的代码,采用异或运算进行加密,解密: 点击(此处)折叠或打开 #include <QtCore/QCoreApplication&g ...
- 同一DataTable下创建多个结构数据相同的DataView的小问题
昨天在根据经理的要求修改公司后台的时候,遇到了一个很奇怪的问题 DataView dvFocus = ]); DataView dvLook = ]); DataView dvNewUser = ]) ...
- javascript 获取event对象
//转载处 http://www.cnblogs.com/funlake/archive/2009/04/07/1431238.html 非常详细 先从一个简单的例子说起,一个简单的button控件如 ...
- SPOJ QTREE 系列解题报告
题目一 : SPOJ 375 Query On a Tree http://www.spoj.com/problems/QTREE/ 给一个树,求a,b路径上最大边权,或者修改a,b边权为t. #in ...