Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 将绘图限制为一个区域_Lua_Love2d - Fatal编程技术网

Lua 将绘图限制为一个区域

Lua 将绘图限制为一个区域,lua,love2d,Lua,Love2d,问题 我希望在love2d中有一个区域,可以在其中绘制可移动的对象。对象的移动不受区域边界的限制,而是受图形的限制。把它想象成透过窗户向外看。例如:区域中的蓝色矩形,如果移动到一侧,其图形应截断到该区域的边界 搬家前: 移动后(错误): 移动后(右): 限制和假设 可以假定该区域为矩形 要在其中绘制的对象可以是任何对象:多边形、图像或文本 这个区域覆盖了它后面的任何东西(好像它有自己的背景) 不属于该区域的对象应按常规绘制 a尝试的解决方案 我知道我可以在对象“接触”区域边界时立即停止绘制

问题

我希望在
love2d
中有一个区域,可以在其中绘制可移动的对象。对象的移动不受区域边界的限制,而是受图形的限制。把它想象成透过窗户向外看。例如:区域中的蓝色矩形,如果移动到一侧,其图形应截断到该区域的边界

搬家前:

移动后(错误):

移动后(右):

限制和假设

  • 可以假定该区域为矩形
  • 要在其中绘制的对象可以是任何对象:多边形、图像或文本
  • 这个区域覆盖了它后面的任何东西(好像它有自己的背景)
  • 不属于该区域的对象应按常规绘制
  • a尝试的解决方案


    我知道我可以在对象“接触”区域边界时立即停止绘制对象,但这会导致它们突然消失,然后在完全位于区域内时出现。我想这需要某种分层系统,但我不知道如何将其包含在
    love2d

    中,我想你正在寻找

    剪刀将绘图区域限制为指定的矩形

    不带任何参数调用函数(即
    love.graphics.setScissor()
    )将禁用剪刀

    例如:

    function love.draw ()
      -- sets the drawing area to the top left quarter of the screen
      local width, height = love.graphics.getDimensions()
      love.graphics.setScissor(0, 0, width / 2, height / 2)
      -- code to draw things
      love.graphics.setScissor()
    end
    

    看来这正是我需要的。如何“取消设置”此函数?一个简短的例子将是最受欢迎的。