Unity2D实现Sprite根据手指滑动并且添加限制范围

拖动是非常常用的功能,也非常容易实现,比如直接让物体坐标等于鼠标坐标等。本篇博客主要讲解如何实现拖拽并限制拖拽区域。
注意对象要加上collider2D。

	public float limit = 5f;
    public float speed = 2.5f;
    Vector3 oriMousePos;

    private void OnMouseDown()
    {
        oriMousePos = Input.mousePosition; //记录按下位置
    }

    private void OnMouseDrag()
    {
        //当前鼠标位置与初始鼠标点下位置的偏移量
        var offset = (Camera.main.ScreenToWorldPoint(Input.mousePosition).x - Camera.main.ScreenToWorldPoint(oriMousePos).x) * speed;

        //到达边界后执行,offset > 0是为了可以反向滑动
        if (transform.position.x >= limit && offset > 0)
        {
            transform.position = new Vector3(limit, transform.position.y, transform.position.z); //锁定位置不可越过界限
            oriMousePos = Input.mousePosition; //重置偏移,反向滑动可以立即生效
            return; //停止移动
        }

        //同上
        if (transform.position.x <= -limit && offset < 0)
        {
            transform.position = new Vector3(-limit, transform.position.y, transform.position.z);
            oriMousePos = Input.mousePosition;
            return;
        }

        //移动
        transform.Translate(new Vector3(offset, 0, 0) * Time.deltaTime, Space.Self);
    }

原理很简单,记录下方便下次使用,如果要对Y轴加限制稍微修改下代码即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我寄人间雪满头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值