Şimdi Ara

LibGDX de Spawner ve Timer

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
385
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar 3 sene önce Game Maker'da Collision adında üstümüze gelen tetris bloklarından kaçtığımız basit bir oyun yapmıştım. Uygulamayı derlediğim Game Maker sürümü crack olduğu için sonrasında sorun yaşamamak için uygulamayı Google Play Store 'a atmamıştım. Şu anda libGDX kütüphanesini kullanarak aynı oyunu yeniden kodluyorum fakat bir iki sorunla karşılaştım.

    Game Maker da bir level objesi oluşturuyordum ve bu obje blok objelerini belirli araklıklarla oyuna çağırıyordu. aynı şeyi libGDX de nasıl yazabilirim?

    Block.java classını oluşturup içine blokların spawnlanacağı rastgele kordinatları ve spawnlandıktan sonra gidecekleri rastgele doğrultuları Xspeed,Yspeed, X ve Y değişkenleriyle belirliyorum ama birden fazla aynı classa ait obje oluşturamıyorum.Yani bir spawner yapamıyorum. Bunu nasıl sağlarım?

    ve spawner'ın 2 saniye arayla obje çıkarmasını istiyorum ama bunu yaptığımda o 2 saniyede oyun duruyor.







  • Merhaba hocam, öncelikle kolay gelsin :)

    Her 2 saniyede bir ekranda yeni bir kutu oluşturan Box2D çalışmam için sanırım istediğine benzer bir iş yaptım.

    render içerisinde "createWithTimer(delta);" satırıyla beraber random bir kutu oluşturuyorum. Kullanılan "timer" değişkeni de float tipinde.

     
    SpriteBatch spriteBatch;
    OrthographicCamera camera;
    ShapeRenderer shapeRenderer;
    World world;
    Box2DDebugRenderer debugRenderer;
    Array<CustomSprite> boxes;
    Array<Body> bodies;
    float timer = 2f;
    CustomSprite box;

    @Override
    public void render(float delta) {
    worldUpdate();

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.setColor(Color.GOLD); // rgb(44, 62, 80)
    shapeRenderer.rect(0, VH.GameHeight - VH.GameHeightTenPercentage,
    VH.GameHeight, VH.GameWidth);
    shapeRenderer.end();

    spriteBatch.begin();
    for (CustomSprite box : boxes) {
    box.draw(spriteBatch);
    }
    spriteBatch.end();

    debugRenderer.render(world, camera.combined);

    createWithTimer(delta);
    }

    void createWithTimer(float delta) {
    timer -= delta;
    if (timer < 0) {
    timer = 2f;
    createBox();
    }
    }

    void createBox() {
    Random ra = new Random();
    Vector2 p = new Vector2(ra.nextInt((int)VH.GameWidth),
    ra.nextInt((int)VH.GameHeight - VH.GameHeightTenPercentage - 100));
    CustomSprite cSprite = new CustomSprite(new Sprite(
    new Texture(Gdx.files.internal("box.jpg"))), p);
    boxes.add(cSprite);

    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyDef.BodyType.DynamicBody;
    bodyDef.position.set(p.x + cSprite.getWidth() / 2, p.y + cSprite.getHeight() / 2);
    bodyDef.position.set(p.x + cSprite.getWidth() / 2, p.y + cSprite.getHeight() / 2);
    Body body = world.createBody(bodyDef);
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(cSprite.getWidth() / 2, cSprite.getHeight() / 2);
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = shape;
    fixtureDef.density = VH.BoxDensity;
    Fixture f = body.createFixture(fixtureDef);
    bodies.add(body);
    shape.dispose();
    }




  • @__Utqu teşekkür ederim
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.