Как масштабировать только определенные объекты LOVE2D

Это проблема фреймворка Lua LOVE2D.

Всякий раз, когда я пытаюсь установить свойства таких объектов, как цвет или масштаб, это влияет на каждый объект в сцене.

Например,

    for i,enemy  in ipairs(enemies) do 
    love.graphics.scale(0.2,0.2)
   love.graphics.draw(enemyImg,enemy.x,enemy.y)

   end  

Это уменьшает не только вражеский объект, но и все другие объекты, кто-нибудь знает, как это исправить?


person WiLD Designs    schedule 12.05.2015    source источник
comment
Я починил это! Обнаружил ошибку, у меня дважды была функция масштабирования. Мне он понадобился только один раз, что было важнее всего в функциях рисования.   -  person WiLD Designs    schedule 12.05.2015


Ответы (2)


Самый простой способ в вашем случае - использовать необязательные параметры для рисования.

 for _, enemy in ipairs(enemies) do
    love.graphics.draw(enemyImg, enemy.x, enemy.y, 0, --rotation
           enemy.scale)
 end

таким образом масштаб уникален для каждого врага.

person ryanpattison    schedule 12.05.2015

Как отметил rpattiso в своем ответе, love.graphics.draw исключает два необязательных параметра sx и sy, которые устанавливают масштабные коэффициенты конкретного объекта.

Полные параметры функции:

love.graphics.draw(drawable, x, y, r, sx, sy, ox, oy, kx, ky)

r - это вращение объекта, поэтому, если вы не вращаете объект, просто установите его на 0.

Что касается цвета, love2d будет использовать для рисования последний setColor. Поэтому вам нужно будет изменить цвет для каждого объекта, которому нужен новый цвет.

person Spencer    schedule 24.11.2016