gamemaker吧 关注:13,586贴子:94,334
  • 7回复贴,共1

【求助】动态遮罩区域错误,下边界消失,求大佬捞捞qwq

只看楼主收藏回复

是根据这篇教程 在GMS2中实现动态遮罩效果 - 知乎 (zhihu.com) 写的一个滑页效果,单独测试时好好的,不知道为什么移植到工程里就有问题了qwq
设置的mask的sprite尺寸和背景大小相同,需要遮罩的区域画为了不透明,运行时遮罩上边沿正常,但是下边沿似乎失效,在更改mask的sprite坐标后发现,遮罩区域与坐标不匹配(sprite的y设为了屏幕的一半,但是遮罩区域明显从屏幕中上开始)
怀疑是坐标问题,但真的不知道该怎么改了..求大佬捞捞..






IP属地:广西1楼2023-12-03 03:33回复
    在单独测试的项目里就可以正常判定


    IP属地:广西2楼2023-12-03 04:11
    回复
      具体代码在这里【是有问题的那份】
      //draw gui中
      gpu_set_depth(10);
      draw_sprite(s_ph900,bg,0,display_get_gui_height()/8);//手机背景
      draw_sprite(s_ph_mask,0,0,display_get_gui_height()/8);
      gpu_set_blendenable(false);//混合通道关闭
      gpu_set_colorwriteenable(false,false,false,true);//颜色RGB通道关闭,透明度通道为true
      draw_set_alpha(0);
      draw_rectangle(0,0,room_width,room_height,false);//将房间全覆盖
      draw_set_alpha(1);
      draw_sprite(s_ph_mask,0,0,display_get_gui_height()/8);//设置遮罩显示区
      gpu_set_blendenable(true);
      gpu_set_colorwriteenable(true,true,true,true);
      gpu_set_blendmode_ext(bm_dest_alpha,bm_inv_dest_alpha);
      gpu_set_alphatestenable(true);
      draw_sprite(s_ph_interface,interface,0,my_updown);//会话区
      gpu_set_alphatestenable(false);
      gpu_set_blendmode(bm_normal);
      //以下是step部分
      if(m_up)
      {
      my_updown=my_updown-20;
      }
      else if(m_down)
      {
      my_updown=my_updown+20;
      }


      IP属地:广西3楼2023-12-03 11:27
      收起回复
        调了一下,应该是尺寸发生了一些比例变换导致的问题,但是不知道是什么导致的,因为手机背景的显示并没有发生比例问题...可以用笨方法修改mask区域解决,但是不带有通用性..


        IP属地:广西4楼2023-12-03 16:39
        回复
          将不遮罩区域换成了生成的矩形还是会有下边界判定不到的现象
          draw_set_color(c_green); //设置绘制颜色为银色
          draw_rectangle(30, display_get_gui_height()*0.23,sprite_get_width(s_ph900),(display_get_gui_height()*0.8), false); //绘制一个实心矩形


          IP属地:广西5楼2023-12-03 18:15
          回复