鼠标滑动控制物体移动

 此文将以UGUI 为例,利用鼠标滑动控制Image滑动
 首先在Unity中创建一个Image,给Image添加脚本
 脚本如下:
  public float Hspeed = 2.0f;
  public float Vspeed = 2.0f;
  void Update () {
     //调用函数
    function();
  }
  public void function ()
  {
        //获取Image相对于画布的位置
        Vector3 postion = this.transform.localPosition;
        //300 和  75分别为Image至画布四端的位置坐标,目的让Image在画布内滑动
       if (postion.x>=-300&&postion.x<=300&&postion.y<=75&&postion.y>=-75)
       {
            //Input.GetAxis获取虚拟轴,返回-1至1 之间的值,两参数分别表示鼠标横向与纵向滑动
            float h = Hspeed * Input.GetAxis("Mouse X");
            float v = Vspeed * Input.GetAxis("Mouse Y");
            //此处正常参数代码应为(h,v,0),让Image随鼠标滑动值移动,因为博主创建的Image  在z轴方向旋转了90度,所以采用以下参数
            this.transform.Translate(v, -h, 0);
       }
        //控制Image不滑出画布上端脚本
         else if (postion.y>=75)
        {
              float h = Hspeed * Input.GetAxis("Mouse X");
              float v = Vspeed * Input.GetAxis("Mouse Y");
              if(v>0)
               {
                    this.transform.Translate(0, -h, 0);
               }
                else
               {
                    this.transform.Translate(v, -h, 0);
               }
         }
         //控制Image不滑出画布下端脚本
         else if (postion.y <= -75)
         {
              float h = Hspeed * Input.GetAxis("Mouse X");
              float v = Vspeed * Input.GetAxis("Mouse Y");
              if (v > 0)
              {
                 this.transform.Translate(v, -h, 0);
              }
              else
              {
                 this.transform.Translate(0, -h, 0);
              }
          }
           //控制Image不滑出画布左侧脚本
          else if (postion.x <= -300)
          {
             float h = Hspeed * Input.GetAxis("Mouse X");
             float v = Vspeed * Input.GetAxis("Mouse Y");
             if (h > 0)
             {
                 this.transform.Translate(v, -h, 0);
             }
              else
              {
                 this.transform.Translate(v, 0, 0);
              }
          }
           //控制Image不滑出画布右侧脚本
          else if (postion.x >= 300)
         {
               float h = Hspeed * Input.GetAxis("Mouse X");
               float v = Vspeed * Input.GetAxis("Mouse Y");
               if (h > 0)
               {
                  this.transform.Translate(v, 0, 0);
               }
                else
               {
                  this.transform.Translate(v, -h, 0);
               }
          }
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值