我怎样才能在libgdx / android中移动圈子?

时间:2016-08-09 15:23:27

标签: java android libgdx

嘿,我目前在一个你必须避开小行星的游戏上编程(显示为圆圈)。

以下是我创建小行星的代码:

renderer = new ShapeRenderer();

RandomXS128 rand = new RandomXS128();
for (int i = 0; i < 20; i++) {
 circlePositions.add(
  new Vector2(
   rand.nextInt(Gdx.graphics.getWidth()),
   rand.nextInt(Gdx.graphics.getHeight())
  )
 );
 circlePositions.add(
  new Vector2(
   rand.nextInt(Gdx.graphics.getWidth()),
   rand.nextInt(Gdx.graphics.getHeight())
  )
 );
}

renderer.begin(ShapeType.Filled);

for (int i = 0; i < circlePositions.size; i++) {
 Vector2 pos = circlePositions.get(i);

 renderer.setColor(Color.GRAY);
 renderer.circle(pos.x, pos.y, 50);
}

renderer.end();

如何在圈子中添加随机动作?

1 个答案:

答案 0 :(得分:0)

您可以在circleposition类中创建speedx和speedy或random方向变量,并为它们提供随机值。 但是你也应该更新圆圈的x和y。

例如,在创建circlePositions类时,还要添加direction参数并在circlePosition类中创建名为update()的新方法。

 circlePositions.add(
                new Vector2(
                        rand.nextInt(Gdx.graphics.getWidth()), 
                        rand.nextInt(Gdx.graphics.getHeight()))
                        direction );

调用时将方向设置为0到360之间的随机值。 您可以使用libgdx的MathUtils.random()方法。

 circlePositions.add(
                    new Vector2(
                            rand.nextInt(Gdx.graphics.getWidth()), 
                            rand.nextInt(Gdx.graphics.getHeight()))
                            MathUtils.random(360f) );

也改变构造函数。

public circlePosition(Vector2 position, float direction )
{
...
this.direction=direction;// now you have random direction stored in circlePosition class

}

在circlePosition类的update()方法中

void update()
{
 x+=MathUtils.cosDeg(direction)*speed;//You can simply change speed by setting speeds value 
 y+=MathUtils.sinDeg(direction)*3.6f;//Or you can just use float
} 

别忘了调用circlePositions.update();