我正在尝试建立一个RPG世界制造者。我有单独的图像类。像这样。
Object1::Object1(int x, int y, CSDL_Setup *sdl_set, int *p_CamX, int *p_CamY)
{
X_pos = x;
Y_pos = y;
MouseX = 0;
MouseY = 0;
CamX = p_CamX;
CamY = p_CamY;
Object = new CSprite(sdl_set->GetRenderer(),"data/Trees/Tree3.png", X_pos, Y_pos, 100, 200, CamX, CamY);
}
我创建了一个Object1类对象的向量,并在创建新图像时将其推回。我把它们画在这里。
void DrawObjects()
{
for(std::vector<Object1*>::iterator i = Object.begin(); i != Object.end(); ++i)
{
(*i)->Draw();
}
}
现在渲染是通过创建对象的顺序完成的。我想根据每个对象的y值进行渲染。我做了很多研究,但无法找到任何示例代码。我还有其他类的其他图像。所以我自己尝试了一些东西来排序y值并检测哪个y值对应于哪个对象。但是我被困在这里。
int a;
void DoChanges()
{
if(ChangeMade)
{
a = 0;
for(std::vector<Object1*>::iterator i = Object1.begin(); i != Object1.end(); ++i)
{
ObjectArray[a] = (*i)->GetY();
a++;
}
for(std::vector<Object2*>::iterator i = Object2.begin(); i != Object2.end(); ++i)
{
ObjectArray[a] = (*i)->GetY();
a++;
}
...
SIZE = Object1.size() + Object2.size() + Object3.size() + ...;
sort(ObjectArray, ObjectArray + SIZE);
for(size_t i = 0; i < SIZE; i++)
{
for(size_t j = 0; j < SIZE; j++)
{
if(tree1[j]->GetY() == ObjectArray[i])
{
}
else if(tree2[j]->GetY() == ObjectArray[i])
{
}
...
}
}
ChangeMade = false;
}
有没有办法创建一个指针数组,通过y值将对象的地址存储到不同的类,并使用这个数组进行渲染?或者您对如何处理创建对象和渲染或任何有用的链接有任何建议吗?