2016-03-22 3 views
1

Ich entwerfe ein Spiel, das es Spielern erlaubt, Objekten auszuweichen, die auf sie fallen, aber ich weiß nicht, wie man ein Sprite auf die Spieler fallen lässt. Ich habe Eiszapfen herunterfallen, aber ich kann nicht herausfinden, wie Sprites/Bilder herunterfallen. Wie ist es getan?java import a sprites

Konstante:

public static final float ICICLES_HEIGHT = 1.0f; 
    public static final float ICICLES_WIDTH = 0.5f; 
    public static final Vector2 ICICLES_ACCELERATION = new Vector2(0, -5.0f); 
    public static final Color ICICLE_COLOR = Color.WHITE; 

Icicle:

package com.udacity.gamedev.icicles; 

import com.badlogic.gdx.graphics.glutils.ShapeRenderer; 
import com.badlogic.gdx.math.Vector2; 

public class Icicle { 

    public static final String TAG = Icicle.class.getName(); 

    Vector2 position; 
    Vector2 velocity; 

    public Icicle(Vector2 position) { 
     this.position = position; 
     this.velocity = new Vector2(); 
    } 

    public void update(float delta) { 
     velocity.mulAdd(Constants.ICICLES_ACCELERATION, delta); 
     position.mulAdd(velocity, delta); 
    } 

    public void render(ShapeRenderer renderer) { 
     renderer.triangle(
       position.x, position.y, 
       position.x - Constants.ICICLES_WIDTH/2, position.y + Constants.ICICLES_HEIGHT, 
       position.x + Constants.ICICLES_WIDTH/2, position.y + Constants.ICICLES_HEIGHT 
     ); 
    } 
} 

Icicles:

package com.udacity.gamedev.icicles; 

import com.badlogic.gdx.graphics.glutils.ShapeRenderer; 
import com.badlogic.gdx.math.MathUtils; 
import com.badlogic.gdx.math.Vector2; 
import com.badlogic.gdx.utils.DelayedRemovalArray; 
import com.badlogic.gdx.utils.viewport.Viewport; 
import com.udacity.gamedev.icicles.Constants.Difficulty; 


public class Icicles { 

    public static final String TAG = Icicles.class.getName(); 

    Difficulty difficulty; 

    int iciclesDodged; 
    DelayedRemovalArray<Icicle> icicleList; 
    Viewport viewport; 

    public Icicles(Viewport viewport, Difficulty difficulty) { 
     this.difficulty = difficulty; 
     this.viewport = viewport; 
     init(); 
    } 

    public void init() { 
     icicleList = new DelayedRemovalArray<Icicle>(false, 100); 
     iciclesDodged = 0; 
    } 

    public void update(float delta) { 
     if (MathUtils.random() < delta * difficulty.spawnRate) { 
      Vector2 newIciclePosition = new Vector2(
        MathUtils.random() * viewport.getWorldWidth(), 
        viewport.getWorldHeight() 
      ); 
      Icicle newIcicle = new Icicle(newIciclePosition); 
      icicleList.add(newIcicle); 
     } 

     for (Icicle icicle : icicleList) { 
      icicle.update(delta); 
     } 

     icicleList.begin(); 
     for (int i = 0; i < icicleList.size; i++) { 
      if (icicleList.get(i).position.y < -Constants.ICICLES_HEIGHT) { 
       iciclesDodged += 1; 
       icicleList.removeIndex(i); 
      } 
     } 
     icicleList.end(); 
    } 

    public void render(ShapeRenderer renderer) { 
     renderer.setColor(Constants.ICICLE_COLOR); 
     for (Icicle icicle : icicleList) { 
      icicle.render(renderer); 
     } 
    } 
} 
+0

Sie brauchen nur die Schwerkraft. – Gaktan

Antwort

0

Innerhalb der Update-Methode von Eiszapfen Objekt, müssen Sie halten die Y dass koordinieren Aktualisierung Eiszapfen. Wie ich mich erinnere, wird die linke untere Ecke als (0,0) betrachtet. Sie müssen also die y-Koordinate der Eiszapfen reduzieren.

Ich nehme an, Sie können es am oberen Rand des Fensters rendern.nur reduzieren Sie die Y für das Objekt in der Haupt-Game-Schleife.Außerdem müssen Sie auch die Render-in-Spiel-Schleife aufrufen.

+0

Thankso aber raus kann ich den Eiszapfen vom fallenden auf fallende Bilder ändern? – Alex

+0

Sie müssen nur die Bildposition innerhalb der Spielschleife rendern und aktualisieren. Damit das Bild herunterfällt – denis