AndEngine中三种网格的Sprite表格方案

时间:2013-03-31 22:47:25

标签: android andengine

我正在使用Android和AndEngine的一些游戏创意,但我找不到一个好的平铺方法。

游戏的某些部分将包含矩形网格。对于网格的每个方形边或内部正方形,三种“样式”是可能的。为简单起见,我们可以考虑灰色,蓝色和红色。

问题是,当我考虑制作精灵表时,我不知道该怎么做。

这是我的第一个想法的快速(和糟糕的绘图),黑色网格和绿色切割。这个问题是我需要最多 512 版本的线路交叉。

Bad drawing

有更好的方法吗?我可以不用精灵表,只绘制线条和填充矩形吗?

2 个答案:

答案 0 :(得分:1)

抱歉,我无法完全理解你的想法。但是,据我所知,你正在处理不同风格的大量正方形和线条。这就是你是对的,你不需要任何SpritesAndEngine有一些类来绘制简单的东西,它比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;
}