限制绘图区域

问题

我想在 love2d 中有一个可移动对象绘制的区域。对象的移动不受区域边界的限制,但绘图受限。就像透过窗户向外看一样。例如:在区域中有一个蓝色矩形,如果它向一侧移动,它的绘图应被截断到区域的边界。

移动前:

区域和对象

移动后(错误):

输入图像描述

移动后(正确):

输入图像描述

限制和假设

  1. 可以假设该区域是矩形的。
  2. 内部绘制的对象可以是任何东西:多边形、图像或文本。
  3. 该区域覆盖其后面的任何东西(就像有自己的背景一样)。
  4. 不属于该区域的对象应按通常的方式绘制。

尝试的解决方案

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

点赞
用户336528
用户336528

我认为你想要使用love.graphics.setScissor

scissor 函数将绘制区域限制为指定的矩形。

不带参数调用该功能(即love.graphics.setScissor())将禁用 scissor

例子:

function love.draw ()
  -- 将绘制区域设置为屏幕左上角的四分之一
  local width, height = love.graphics.getDimensions()
  love.graphics.setScissor(0, 0, width / 2, height / 2)
  -- 用于绘制的代码
  love.graphics.setScissor()
end
2017-01-17 07:23:28