我正在使用 Android 和 AndEngine 进行一些游戏创意,但我找不到一个好的平铺方法。
游戏的某些部分将包含在一个矩形网格上。对于网格的每个正方形边或内部正方形,三种“样式”是可能的。为简单起见,我们可以考虑灰色、蓝色和红色。
问题是,当我考虑制作精灵表时,我不知道该怎么做。
这是我的第一个想法的快速(和糟糕的绘图),黑色网格和绿色切割。这个问题是我需要有多达512 个版本的线交叉。
有更好的方法吗?我可以在没有精灵表的情况下做到这一点,只画线和填充矩形吗?
对不起,我不能完全按照你的想法。但是,我知道您正在处理许多不同样式的正方形和线条。这就是你正确的地方,你不需要任何东西Sprites
,AndEngine
有一些类来绘制简单的东西,它比 Sprites 快得多。
用线条再现图形的基本示例
// first the green lines (they are under the black ones)
Line[] greenLines = new Line[8];
// from (x0 ,y0) to (x1,y1) with lineWidth=5px
// the outer square
greenLines[0] = new Line(0, 0, 100, 0, 5, vertexBufferObjectManager); // top line
greenLines[1] = new Line(100, 0, 100, 100, 5, vertexBufferObjectManager); // right line
greenLines[2] = new Line(100, 100, 0, 100, 5, vertexBufferObjectManager); // bottom line
greenLines[3] = new Line(0, 100, 0, 0, 5, vertexBufferObjectManager); // left line
// inner horizontal lines
greenLines[4] = new Line(0, 33, 100, 33, 5, vertexBufferObjectManager);
greenLines[5] = new Line(0, 66, 100, 66, 5, vertexBufferObjectManager);
// inner vertical lines
greenLines[6] = new Line(33, 0, 33, 100, 5, vertexBufferObjectManager);
greenLines[7] = new Line(66, 0, 66, 100, 5, vertexBufferObjectManager);
// now the black lines
Line[] blackLines = new Line[4];
blackLines[0] = new Line(0, 15, 100, 15, 5, vertexBufferObjectManager);
blackLines[1] = new Line(0, 81, 100, 81, 5, vertexBufferObjectManager);
blackLines[2] = new Line(15, 0, 15, 100, 5, vertexBufferObjectManager);
blackLines[3] = new Line(81, 0, 81, 100, 5, vertexBufferObjectManager);
// now set the color and attach the lines to the scene (green)
for(Line line: greenLines){
line.setColor(0f,1f,0f);
myScene.attachChild(line);
}
// now set the color and attach the lines to the scene (black)
for(Line line: blackLines){
line.setColor(0f,0f,0f);
myScene.attachChild(line);
}
上面的这个例子应该确实有效。现在您只需要更改它并根据您的需要进行调整。如果你想改变一条线,你可以调用myLine.setPosition(fromX, fromY, toX, toY);
oh,一个矩形也很简单:Rectangle rectangle = new Rectangle(50,50,100,100, 5, vertexBufferObjectManager);
对于一个从 (50,50) 开始,宽 100 像素,高 100 像素的矩形。并具有 5 像素的线宽。您可以像设置线条一样设置矩形的颜色。唯一的问题是,矩形总是被填充的。如果你想要一个空的矩形,你必须用线条来绘制它。
public Line buildGrid(int pWidth, int pHeight, float pRed, float pGreen, float pBlue){
Line grid = new Line(0, 0, 0, pHeight);
grid.setColor(0.5f, 0.5f, 0.5f);
int cont = 0;
while(cont < pWidth){
cont += 10;
grid.attachChild(new Line(cont, 0, cont, pHeight));
grid.getLastChild().setColor(pRed, pGreen, pBlue);
}
cont = 0;
while (cont < pHeight){
cont += 10;
grid.attachChild(new Line(0, cont, pWidth, cont));
grid.getLastChild().setColor(pRed, pGreen, pBlue);
}
return grid;
}