SFML如何在特定时间绘制多个纹理的堆

问题描述

你好,我正在使用SFML进行游戏,但是遇到了一些问题。

我要完成此功能: 如果一个人的角色与物品碰撞,屏幕上就会出现一个垃圾画。 (5个纹理) 因此,从窗口底部会堆积多种垃圾纹理。

我试图使用向量和Sprite数组,但是我的代码无法添加垃圾。它只是绘制一个垃圾,然后更改另一个纹理。 我该怎么做才能在window关闭之前清除垃圾?

我应该添加许多Sprite来解决此问题,但我没有主意...我已经尽力了。

我的代码在这里:

// out of main loop
Texture GarbagesTexture[5];
GarbagesTexture[0] = garbageTex1;
GarbagesTexture[1] = garbageTex2;
GarbagesTexture[2] = garbageTex3;
GarbagesTexture[3] = garbageTex4;
GarbagesTexture[4] = garbageTex5;
int SelectedGarbage = 0;

vector<Sprite> Garbages;
Position GarbagesPosition;
GarbagesPosition.x = 890.f;
GarbagesPosition.y = 590.f;

// main loop
//collision
for (size_t i = 0; i < items.size(); i++)
{
        if (humanArr[index].getGlobalBounds().intersects(item[i].getGlobalBounds()))
        {
          ...
          ...
          CollisionTime++;
          SelectedGarbage++;
          if (SelectedGarbage > 5) SelectedGarbage = 0;
          GarbagesPosition.x = GarbagesPosition.x - 10.f;
          GarbagesPosition.y = GarbagesPosition.y - 5.f;

          Sprite GarbageInputSprite;
          Garbages.push_back(GarbageInputSprite);
          Garbages[i].setTexture(GarbagesTexture[SelectedGarbage];
          Garbages[i].setPosition(GarbagesPosition.x,GarbagesPosition.y);
          }
   }

 //draw
 window.clear();
 ...
 ...
 for (int i = 0; i < CollisionTime; i++)
      window.draw(Garbages[i]);   
 window.display();      

我不是SFML的初学者,但是我会尽力而为。 如果您能帮助我解决这个问题,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...