摇杆,3D、2D图片英雄对应位置,滚轮放大缩小

发布时间 2023-04-11 14:06:28作者: 温暖的海
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;
            }
        }
    }
}