2014-10-27 67 views
0

我已經做了類級別生成和與它這麼遠:隨機級別產生與LibGDX

public class LevelGenerator { 

private Sprite environment; 
private float leftEdge, rightEdge, minGap, maxGap, y; 

public Enemy enemy; 

public LevelGenerator(Sprite environment, float leftEdge, float rightEdge, 
     float minGap, float maxGap) { 
    this.environment = environment; 
    this.leftEdge = leftEdge; 
    this.rightEdge = rightEdge; 
    this.minGap = minGap; 
    this.maxGap = maxGap; 
} 

public void generate(float topEdge){ 
    if(y + MathUtils.random(minGap, maxGap) < topEdge) 
     return; 

    y = topEdge; 

    float x = MathUtils.random(leftEdge, rightEdge); 

} 

基本上,我希望發生的是敵人塊隨機對雙方產生的屏幕。這裏是敵人的塊級(很簡單):

public class Enemy extends Sprite{ 

public Enemy(Sprite sprite) { 
    super(sprite); 
} 

@Override 
public void draw(Batch spriteBatch){ 
    super.draw(spriteBatch); 

    } 

} 

這是遊戲的樣子,此刻塊時只是單純的遊戲畫面在固定位置得出:http://i.imgur.com/SIt18Qn.png。我試圖達到的目標是讓這些「敵人」區塊在屏幕兩側隨機產卵,但我似乎無法找到一種方法來處理我目前使用的代碼。

謝謝!

+0

能否請你畫線,其中塊應該出現?塊可以重疊嗎? – JohnDow 2014-10-27 20:00:44

回答

0

我無法測試,但我認爲它會沒問題,如果您想要查看它是否與另一個演員發生衝突(如果更新了它在更新和繪製方法中的位置),並且ramdon方法開始自定義看看座標,哪個colicionan被分配給另一個演員rectagulo敵人或再見。

public class overFlowEnemy extends Sprite { 

private final float maxH = Gdx.graphics.getHeight(); 
private final float maxW = Gdx.graphics.getWidth(); 

private Rectangle rectangle; 

private Random random = new Random(); 

private float inttt = 0; 
private float randomN = 0; 

private boolean hasCollided = false; 

public overFlowEnemy(Sprite sprite) { 
    super(sprite); 

    crearEnemigo(); 

    rectangle = new Rectangle(getX(), getY(), getWidth(), getHeight()); 
} 

@Override 
public void draw(Batch spriteBatch) { 
    super.draw(spriteBatch); 


} 

private void crearEnemigo(){ 

    setX(RandomNumber((int)maxW)); 
    setY(RandomNumber((int)maxH)); 
} 

private int RandomNumber(int pos) { 

    random.setSeed(System.nanoTime() * (long) inttt); 
    this.randomN = random.nextInt(pos); 
    inttt += randomN; 

    return (int)randomN; 

} 

public Rectangle getColliderActor(){ 
    return this.rectangle; 
} 

}

類,因爲這應該創建一個隨機的敵人。

編輯:重讀你的問題,是因爲我的英文不是很好,而且我認爲你只想畫在畫面的兩側,如果是的話,告訴我或適應課堂,因爲當你創造思想時,在屏幕上。

我剛剛添加了另一個類,如果可以並且想要按照您告訴我哪個是正確的方式工作,並刪除另一個類。

public class overFlow extends Sprite { 

private final float maxH = Gdx.graphics.getHeight(); 
private final float maxW = Gdx.graphics.getWidth(); 

private Rectangle rectangle; 

private Random random = new Random(); 

private float inttt = 0; 
private float randomN = 0; 

private boolean hasCollided = false; 

public overFlow(Sprite sprite) { 
    super(sprite); 

    crearEnemigo(); 

    rectangle = new Rectangle(getX(), getY(), getWidth(), getHeight()); 
} 

@Override 
public void draw(Batch spriteBatch) { 
    super.draw(spriteBatch); 


} 

private void crearEnemigo(){ 

    setX(RandomNumber((int)maxW, true)); 
    setY(RandomNumber((int)maxH, false)); 
} 

private int RandomNumber(int pos, boolean w) { 

    random.setSeed(System.nanoTime() * (long) inttt); 
    if (w = true){ 

     this.randomN = random.nextInt((pos)); 

      if(randomN % 2 == 0){ 
       randomN = (pos - getWidth()); 
      }else{ 
       randomN = 0; //left screen 
      } 
    }else{ 

     this.randomN = random.nextInt(pos - (int)getHeight()); 
    } 
     inttt += randomN; 

    return (int)randomN; 

} 

public Rectangle getColliderActor(){ 
    return this.rectangle; 
} 

}