1

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

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

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

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

画不好

有更好的方法吗?我可以在没有精灵表的情况下做到这一点,只画线和填充矩形吗?

4

2 回答 2

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);oh,一个矩形也很简单:Rectangle rectangle = new Rectangle(50,50,100,100, 5, vertexBufferObjectManager);对于一个从 (50,50) 开始,宽 100 像素,高 100 像素的矩形。并具有 5 像素的线宽。您可以像设置线条一样设置矩形的颜色。唯一的问题是,矩形总是被填充的。如果你想要一个空的矩形,你必须用线条来绘制它。

于 2013-04-02T12:56:44.347 回答
-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;
}
于 2013-06-13T13:05:21.447 回答