最笨的将一物体在屏幕范围内拖动

20 篇文章 0 订阅
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class TestDrag : MonoBehaviour ,IDragHandler{

    public Image map;
    float map_width;
    float map_heigh;

    float stansrdPosX;
    float stansrdPosY;

    void Start()
    {
        // 被拖动物体的宽和高
        map_width = gameObject.GetComponent<RectTransform>().sizeDelta.x;
        map_heigh = gameObject.GetComponent<RectTransform>().sizeDelta.y;

        Debug.Log(map_width);
        Debug.Log(map_heigh);
        stansrdPosX = map_width / 2;
        stansrdPosY = map_heigh / 2;
    }

    public void OnDrag(PointerEventData eventData)
    {
        // 鼠标位置
        float posX = Input.mousePosition.x;
        float posY = Input.mousePosition.y;

        if (posX > stansrdPosX && posX < (1366- stansrdPosX) && posY > stansrdPosY && posY < (768- stansrdPosY))
        {
            gameObject.transform.position = Input.mousePosition;
        }
        if (posX <= stansrdPosX)
        {
            posX = stansrdPosX + 5;
        }
        if (posX >= (1366 - stansrdPosX))
        {
            posX = (1366 - stansrdPosX) - 5;
        }
        if (posY <= stansrdPosY)
        {
            posY = stansrdPosY + 5;
        }
        if (posY >= (768 - stansrdPosY))
        {
            posY = (768 - stansrdPosY) - 5;
        }
        gameObject.transform.position = new Vector2(posX, posY);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值