我正在使用Android和AndEngine的一些游戏创意,但我找不到一个好的平铺方法。
游戏的某些部分将包含矩形网格。对于网格的每个方形边或内部正方形,三种“样式”是可能的。为简单起见,我们可以考虑灰色,蓝色和红色。
问题是,当我考虑制作精灵表时,我不知道该怎么做。
这是我的第一个想法的快速(和糟糕的绘图),黑色网格和绿色切割。这个问题是我需要最多 512 版本的线路交叉。
有更好的方法吗?我可以不用精灵表,只绘制线条和填充矩形吗?
答案 0 :(得分:1)
抱歉,我无法完全理解你的想法。但是,据我所知,你正在处理不同风格的大量正方形和线条。这就是你是对的,你不需要任何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);
哦,矩形也很简单:Rectangle rectangle = new Rectangle(50,50,100,100, 5, vertexBufferObjectManager);
对于一个从(50,50)开始,宽100像素,高100像素的矩形。并且线宽为5像素。您可以为线条设置矩形的颜色。唯一的问题是,矩形始终填充。如果你想要一个空的矩形,你必须用线条绘制它。
答案 1 :(得分:-2)
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;
}