有什么办法可以在sfml中使用一个矩形创建动画

问题描述 投票:0回答:2

有什么办法可以在sfml中创建一个动画,不是用spriteheets.而是用1个矩形去另一个位置。https:/gyazo.com0952a960bd7f9e5c9c5e1fe71d0f0b45。我想做一个类似于这样的打孔效果.但我不知道从何下手。

有没有办法在sfml中制作一个平滑的动画?

c++ algorithm animation sfml
2个回答
0
投票

最优雅的方法是用sprite sheets,但也可以不用,做一个for循环,移动矩形的位置,然后再返回。

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))
}

注意:请设置一个恒定的帧率以使其正常工作。 请设置一个恒定的帧率,以使其正常工作。


0
投票

你可以缩放矩形来获得这样的效果。你可能希望缩放它的长度比它的宽度更多,以获得类似于你发布的例子。

要对该比例进行动画,每次只缩放一点(每次updatetimestep或tickframeloop缩放一次),直到它达到较大的比例,然后将其比例返回到原来的大小。

你可以不缩放,而是直接设置大小。

你也可以根据开始和结束时间在两个大小或比例尺之间进行插值。

© www.soinside.com 2019 - 2024. All rights reserved.