unity小地图制作代码....
2016-03-08 14:11
387 查看
using UnityEngine; using UnityEngine.EventSystems; public class UIMiniMap : MonoBehaviour, IPointerDownHandler { /// <summary> /// 小地图上的A点 /// </summary> public RectTransform a; /// <summary> /// 小地图上的B点 /// </summary> public RectTransform b; /// <summary> /// 控制的东西,这里使用cube代替 /// </summary> public GameObject players; /// <summary> /// 3D物体0点,设置初始点 /// </summary> public GameObject zerpos; /// <summary> /// 摄像机 /// </summary> private Camera UICamera; /// <summary> /// 地图大小 /// </summary> public float scale = 160; /// <summary> /// A,B两点 /// </summary> private Vector3 acpos; private Vector3 bcpos; void Start() { setCamera(gameObject); } void setCamera(GameObject gam) { if (gam.GetComponent<Canvas>() != null) { Canvas can = gam.GetComponent<Canvas>(); //设置画布相机的渲染模式为worldCamera if (can.renderMode == RenderMode.ScreenSpaceOverlay) { UICamera = null; } else { // UICamera = can.worldCamera; } return; } //获得父类,Canvas物体 gam = gam.transform.parent.gameObject; //在运行的过程中实时设置摄像机的渲染模式 setCamera(gam); } /// <summary> /// 鼠标点击事件的处理 /// </summary> /// <param name="eventData">鼠标点击事件处理类</param> public void OnPointerDown(PointerEventData eventData) { III(eventData); } public void OnDrag(PointerEventData eventData) { III(eventData); } /// <summary> /// 处理鼠标点击事件的方法 /// </summary> /// <param name="eventData"></param> void III(PointerEventData eventData) { if (UICamera == null) { //获取A,B两点,并保存 acpos = a.position; bcpos = b.position; } else { acpos = UICamera.WorldToScreenPoint(a.position); bcpos = UICamera.WorldToScreenPoint(b.position); } //计算两个点的差值 float h = bcpos.y - acpos.y; float w = bcpos.x - acpos.x;
<span style="white-space:pre"> </span>//计算鼠标点击的点与A,B两点的差值 float tempH = eventData.position.y - acpos.y; float tempW = eventData.position.x - acpos.x; //小地图与大地图的转换公式 float dtw = tempW / w * scale; float dth = tempH / h * scale; //把新的位置赋值给players,实现在小地图中的移动 Vector3 tempPos = new Vector3(dtw, players.transform.position.y, dth); players.transform.position = zerpos.transform.position + tempPos; } }
相关文章推荐
- UnitySocket通讯,实现连个设备进行消息通讯
- Unity3D -- 设置Android支付横屏竖屏
- Unity3d外包-就找北京动点软件
- Unity3D -- 快速排序
- unity3D -- 给游戏体添加组件
- [Solution] AOP原理解析及Castle、Autofac、Unity框架使用
- Unity 中关于 BuildSetting 中 “Optimize Mesh Data” 选项的“坑”
- unity替换mesh测试
- 测试-Unity修改权重
- 坑爹的Unity与Android交互
- iTween基础之Audio(音量和音调的变化)
- Unity3D 参考网址
- Unity自带的SimpleJSon的简单使用
- [置顶] Unity中关于图形学的基础知识—矩阵(二)
- 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
- [置顶] unity中关于图形学的基础知识(一)
- unity之旅
- Unity3D之Web Player与unity的互相传值交互
- Unity开发Android游戏(二)Hello world!
- Unity开发Android游戏(一)搭建Unity安卓开发环境