libgdx - 如何使用for循环创建Circle类对象?

时间:2017-03-14 10:46:28

标签: java android libgdx

我正在创建棋盘游戏,我需要为玩家绘制圈子(2-5名玩家)。我可以使用ShapeRenderer绘制它们但是我不能控制圆圈(改变位置,半径等)。所以我需要使用for循环创建2-5 Circle类对象(我想用for循环来做)。我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以创建一个圆类,并使用for循环遍历它们。例如:

public class MyCirlce{

    private float radius;
    private Vector2 position;

    public MyCircle(float xPos, float yPos, float radius){
         position = new Vector2(xPos, yPos);
         this.radius = radius;   
    }

    public void translate(float xAmount, float yAmount){
         position.x += xAmount;
         position.y += yAmount;
    }

    public void changeSizeBy(float changeAmount){
         radius += changeAmount;
    }

    public void render(ShapeRenderer render){
            render.circle(position.x, position.y, radius);
    }


}

这将允许您动态更改命名圆圈的位置和大小。此外,如果你不介意使用内置的东西,你可以去他们的wiki看到他们有一个Circle类似于此的对象,具有额外的功能,例如' Overlaps'方法

答案 1 :(得分:0)

您可以使用ShapeRenderer绘制圆圈whitout 你可以绘制另一个物体,而不是移动它们,例如我制作一个蛇白色标签 比你可以移动它们

答案 2 :(得分:0)

您的Circle是仅在视图中需要还是在模型中需要(例如,圆圈之间的碰撞检测)。

如果仅查看,请拍摄圆形.png图像。创建SpriteImage对象并使用它,否则您可以使用ShapeRenderer绘制Circle。

您可以使用ShapeRender对象更改位置将此Actor与scene2d

一起使用

https://github.com/itsabhiaryan/gdx-utils/blob/master/gdx-utils/src/com/ng/gdxutils/actor/ShapeRendererActor.java

修改

public static Pixmap getPixmapCircle(int radius, Color color, boolean isFilled) {
        Pixmap pixmap=new Pixmap(2*radius+1, 2*radius+1, Pixmap.Format.RGBA8888);
        pixmap.setColor(color);
        if(isFilled)
            pixmap.fillCircle(radius, radius, radius);
        else
            pixmap.drawCircle(radius, radius, radius);
        pixmap.drawLine(radius, radius, 2*radius, radius);
        Pixmap.setFilter(Pixmap.Filter.NearestNeighbour);
        return pixmap;
}

Texture texture=new Texture(getPixmapCircle(10, Color.RED, true));

Image image=new Image(texture);
or
Sprite sprite=new Sprite(texture);