есть ли в любом случае для создания анимации в SFML, используя прямоугольник - PullRequest
0 голосов
/ 22 апреля 2020

Есть ли способ создать анимацию в sfml. не со спрайт-листами. но с 1 прямоугольником, идущим в другую позицию. https://gyazo.com/0952a960bd7f9e5c9c5e1fe71d0f0b45 Я хочу эффект перфорации, подобный этому. но я не знаю, с чего начать.

Есть ли в sfml плавную анимацию?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

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

Чтобы анимировать этот масштаб, масштабируйте его немного за раз (один раз за обновление / временной шаг или такт / кадр) / l oop) до тех пор, пока он не достигнет большего масштаба, а затем вернет его масштаб обратно к исходному размеру.

Вместо масштабирования вы можете установить размер напрямую.

Вы также можете интерполировать между двумя размерами или шкалами на основе времени начала и окончания.

0 голосов
/ 23 апреля 2020

Самый элегантный способ был бы с листами спрайтов, но это может быть сделано без. Сделайте для l oop, который перемещает положение прямоугольника и затем возвращает его обратно

float smoothness //try for your values
float directionX; //if negative punch left set values 1 or -1
float directionY; //if negative punch down set values 1 or -1
int reach;
for(int i=0;i<reach;i++)
{
     rect.setPosition(
     directionX*(rect.getPosition.x+smoothness)
     ,directionY*(rect.getPosition.y+smoothness))
}
//return to original position
for(int i=0;i<reach;i++)
{
     rect.setPosition(
     -directionX*(rect.getPosition.x+smoothness)
     ,-directionY*(rect.getPosition.y+smoothness))
}

ПРИМЕЧАНИЕ: Пожалуйста, установите постоянную частоту кадров, чтобы это работало правильно

...