using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; /// <summary> /// 英雄移动 /// </summary> public class yd : MonoBehaviour,IDragHandler,IEndDragHandler { public GameObject ima;//父集图片 Vector2 v2, st; bool b; //public GameObject player;//英雄 GameObject p;//英雄 public GameObject cam;//相机 Vector3 v3;//距离 public Image dt;//地图 public Image pl;//人物点 Vector3 v, v1;//dt位置 //拖拽中 public void OnDrag(PointerEventData eventData) { b = true; v2 = eventData.position - st; transform.localPosition = Vector3.ClampMagnitude(v2, 30f); } //拖拽结束 public void OnEndDrag(PointerEventData eventData) { b = false; transform.position = ima.transform.position; } // Start is called before the first frame update void Start() { st = transform.position;//赋初始位置 p = GameObject.FindGameObjectWithTag("g");//找到英雄标签 p.transform.position = new Vector3(0, 1, 0);//英雄赋初始位置 p.transform.rotation = Quaternion.EulerRotation(0, 0, 0); p.GetComponent<Rigidbody>().useGravity = true;//英雄刚体激活 //相机 v3 = p.transform.position - cam.transform.position; //小地图 v = new Vector3(-4.5f, 0, -4.5f); } // Update is called once per frame void Update() { if (b == true) { p.transform.LookAt(new Vector3(v2.x, 0, v2.y));//英雄朝向 p.transform.Translate(Vector3.forward * 2 * Time.deltaTime);//英雄移动 v1 = p.transform.position; float x = (v1.x - v.x) / 9; float y = (v1.z - v.z) / 9; dt.rectTransform.pivot = new Vector2(x, y); dt.rectTransform.localPosition = Vector3.zero; pl.transform.eulerAngles = new Vector3(0, 0, -p.transform.eulerAngles.y); } //相机和英雄的距离始终保持一致 cam.transform.position = p.transform.position - v3; //鼠标滚轮放大地图图片 if(Input.mouseScrollDelta.y>0) { dt.transform.localScale += Vector3.one; } //鼠标滚轮缩小地图图片 if (Input.mouseScrollDelta.y < 0) { if(dt.transform.localScale.x-1>0) { dt.transform.localScale -= Vector3.one; } } } }
标签:Vector3,transform,2D,摇杆,英雄,position,dt,public,3D From: https://www.cnblogs.com/cxh123/p/17306017.html