嘿,我目前在一个你必须避开小行星的游戏上编程(显示为圆圈)。
以下是我创建小行星的代码:
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();
如何在圈子中添加随机动作?
答案 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();