2017-01-16 14 views
2

ПроблемыОграничить рисунок в области

Я хотел бы иметь площадь внутри love2d, в котором нарисованы подвижные объекты. Движение объектов не ограничено границами областей, но чертеж. Подумайте об этом, глядя в окно через окно. Например: синий прямоугольник в области, если он перемещается в сторону, его рисунок должен быть усечен до границ области.

Перед перемещением:

area and object

После перемещения (неправильно):

enter image description here

После перемещения (справа):

enter image description here

Ограничения и допущения

  1. Можно предположить, область имеет прямоугольную форму.
  2. Объект рисования внутри может быть любым: многоугольником, изображением или текстом.
  3. Площадь покрывает все, что находится за ним (как если бы оно имело собственный фон)
  4. Объекты, не принадлежащие к области, должны быть нарисованы, как обычно.

Atempted решения

Я знаю, что я мог прекратить рисовать объекты, как только они «контакт» в boundries области, но это заставит их внезапно исчезнуть, а затем появляются, когда они полностью внутри области. Я предполагаю, что это требует какой-то системы слоев, но я не знаю, как включить это в love2d.

ответ

2

Я думаю, что вы ищете love.graphics.setScissor.

Ножницы ограничивают область чертежа указанным прямоугольником.

Вызов функции без каких-либо аргументов (т. Е. 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 
+0

Кажется, это то, что мне нужно. Как «отменить» эту функцию? Короткий пример будет очень приветствуем. – Siemkowski

 Смежные вопросы

  • Нет связанных вопросов^_^