Unity3D技术之制作RPG地图2(自己控制地图上图标)
- 格式:docx
- 大小:130.40 KB
- 文档页数:4
上一次用Unity摄像机方式实现了地图的制作,现在介绍另一种实现地图的方式: 自己通过代码实现小地图NCP图标的
显示和隐藏
制作地图的步骤:
1. 根据游戏人物的3D坐标转换成2D平【狗刨学习网】面坐标,根据距离显示和隐藏游戏的坐标
2. 怪物实时判断与玩家的距离,小于到移动范围,就在小地图上创建Icon的显示
注意事项:
1. 人物移动前进和后退是(x,z)轴, 我们从游戏界面看到的图标是(x,y)轴
代码:
小地图类:
using UnityEngine;
using System.Collections;
///
/// 小地图
///
public class MinMap : MonoBehaviour {
public static MinMap _instance;
public GameObject iconPrefab; //小图标预设,根据不同的名字显示不
同的图标
void Awake()
{
_instance = this;
}
///
/// 在小地图添加图标
///
///
///
public GameObject AddIcon(string iconName)
{
GameObject go = NGUITools.AddChild(this.gameObject,iconPrefab);
go.GetComponent
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 = 8;
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,0) * 8;
//localPosition和position的区别
//怪物超过一定范围,显示和隐藏地图图标
if (Mathf.Abs(offset.x) >= magnitudeX || Mathf.Abs(offset.z) >= magni
tudeZ)
{
minimapIconGO.SetActive(false);
}
else
{
minimapIconGO.SetActive(true);
}
//Debug.Log(offset.z);
}
void OnDestroy()
{
Destroy(this.minimapIconGO);
}
}
源