2016-08-09 173 views
0

Hey, ich programmiere gerade ein Spiel, bei dem man Asteroiden meiden muss (angezeigt als Kreise). HierWie kann ich Kreise in libgdx/android verschieben?

ist der Code, wie ich Asteroiden erstellen:

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(); 

Wie kann ich zufällige Bewegung zu den Kreisen?

+0

Dem Code hinzugefügt, aber die Kreise flackern nur hin und her: 'renderer.circle (pos.x + MathUtils.random (0, 10) * Laufzeit, pos.y + MathUtils.random (0, 10) * Laufzeit, 50); ' –

Antwort

0

Sie können Speedx- und schnelle oder zufällige Richtungsvariablen in der Kreispositionsklasse erstellen und ihnen zufällige Werte zuweisen. Aber Sie sollten auch x und y des Kreises aktualisieren.

Wenn Sie zum Beispiel die Klasse circlePositions erstellen, fügen Sie auch den direction-Parameter hinzu und erstellen eine neue Methode namens update() in der Klasse circlePosition.

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

Beim Aufruf die Richtung auf 0 bis 360 einstellen. Sie können die MathUtils.random() -Methode von libgdx verwenden.

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

Ändern Sie auch Konstruktor.

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

} 

In update() -Methode von circlePosition Klasse

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 
} 

Vergessen Sie nicht circlePositions.update nennen();