Example usage for com.badlogic.gdx.graphics.g2d Sprite getBoundingRectangle

List of usage examples for com.badlogic.gdx.graphics.g2d Sprite getBoundingRectangle

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.g2d Sprite getBoundingRectangle.

Prototype

public Rectangle getBoundingRectangle() 

Source Link

Document

Returns the bounding axis aligned Rectangle that bounds this sprite.

Usage

From source file:at.therefactory.jewelthief.Game.java

License:Open Source License

/**
 * Checks and rectifies the positions of enemies if they are outside of the enemy field.
 */// ww  w  .  ja v  a2s.  c o  m
public void rearrangeEnemies() {
    for (Enemy enemy : enemies) {
        Sprite sprite = enemy.getSprite();
        if (sprite.getBoundingRectangle().x < rectangleEnemyField.x) {
            enemy.setPosition(rectangleEnemyField.x + sprite.getWidth() / 2, enemy.getPosition().y);
        }
        if (sprite.getBoundingRectangle().x > rectangleEnemyField.x + rectangleEnemyField.width) {
            enemy.setPosition(rectangleEnemyField.x + rectangleEnemyField.width - sprite.getWidth() / 2,
                    enemy.getPosition().y);
        }
        if (sprite.getBoundingRectangle().y < rectangleEnemyField.y) {
            enemy.setPosition(enemy.getPosition().x, enemy.getPosition().y + sprite.getHeight() / 2);
        }
        if (sprite.getBoundingRectangle().y > rectangleEnemyField.y + rectangleEnemyField.height) {
            enemy.setPosition(enemy.getPosition().x,
                    rectangleEnemyField.y + rectangleEnemyField.height - sprite.getHeight() / 2);
        }
        enemy.update();
    }
}

From source file:br.cefetmg.games.minigames.CollectItens.java

@Override
public void onHandlePlayingInput() {

    // atualiza a posio do alvo de acordo com o mouse
    Vector3 click = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
    super.screen.viewport.unproject(click);
    this.boca.setPosition(click.x - this.boca.getWidth() / 2, click.y - this.boca.getHeight() / 2);

    if (Gdx.input.justTouched()) {
        for (int i = 0; i < characters.size; i++) {
            Sprite sprite = characters.get(i);
            if (sprite.getBoundingRectangle().overlaps(boca.getBoundingRectangle())) {

                if ((sprite.getTexture() == toothbrushTexture) || sprite.getTexture() == toothpasteTexture) {

                    this.collectGoodItem.play();

                    this.friendsCollected++;

                } else {

                    this.collectBadItem.play();

                    this.boca.setTexture(this.badMouthTexture);

                    this.perdeu.play();
                    this.challengeFailed();

                }//from  ww w. j  a  v  a  2 s.  com

                characters.removeValue(sprite, true);

                if (this.friendsCollected >= friends) {

                    this.venceu.play();
                    super.challengeSolved();

                }
                break;
            }
        }
    }

}

From source file:br.cefetmg.games.minigames.EscoveOsDentes.java

@Override
public void onHandlePlayingInput() {
    // atualiza a posio do alvo de acordo com o mouse
    Vector3 click = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
    super.screen.viewport.unproject(click);
    this.escova.setPosition(click.x - this.escova.getWidth() / 2, click.y - this.escova.getHeight() / 2);

    // itera no array de inimigos
    for (int i = 0; i < Tooths.size; i++) {
        Sprite sprite = Tooths.get(i);
        Escova aux = Escovar.get(i);//from   ww  w  .  j a  v  a2 s.c  o m

        // se h interseo entre o retngulo da sprite e da escova,
        // a escova encostou
        if (sprite.getBoundingRectangle().overlaps(escova.getBoundingRectangle())) {
            // verifica se escova em cima do dente ou nao 
            aux.overlapdentro = 1;
            if (!aux.dentro) {
                // toca um efeito sonoro
                BrushingSound.play(0.5f);
                aux.count += 1;
                aux.dentro = true;
                this.escova.setTexture(bolhas);
            }
        } else {

            aux.overlapfora = 1;
            if (aux.dentro) {
                aux.count += 1;
                aux.dentro = false;
                this.escova.setTexture(EscovaTexture);
            }

            if (aux.count >= this.numEscovada && aux.escovado != 1) {
                // contabiliza um dente limpo
                this.cleanTooth++;
                sprite.setTexture(dente);
                // seta dente como escovado
                aux.escovado = 1;
                itsCleanSound.play();
                // se tiver limpado todo os dentes, o desafio
                // est resolvido
                if (this.cleanTooth >= this.totalTooths) {
                    super.challengeSolved();
                }
                // pra de iterar, porque seno pode pegar em mais
                // de um dente
                break;
            }
        }
    }
}

From source file:br.cefetmg.games.minigames.SaveTheTeeth.java

@Override
public void onHandlePlayingInput() {
    Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
    super.screen.viewport.unproject(mousePos);
    this.cursor.setCenter(mousePos.x + 34.0f, mousePos.y + 13.0f);

    if (Gdx.input.justTouched()) {
        for (int i = 0; i < food.size; i++) {
            Sprite s = food.get(i);
            if (s.getBoundingRectangle().overlaps(cursor.getBoundingRectangle())) {
                if (food.get(i).getIsGood()) {
                    if (mouth.touchedGoodFood() == 0) {
                        backGroundSound.stop();
                        super.challengeFailed();
                    }/*from ww  w.ja va 2s  .  co  m*/
                }
                food.removeIndex(i);
                break;
            }
        }
    }
}

From source file:br.cefetmg.games.minigames.OrientacaoSnake.java

@Override
public void onUpdate(float dt) {
    this.fundo.setSize(this.screen.viewport.getWorldWidth(), this.screen.viewport.getWorldHeight());
    this.snake.setPosition(this.snake.getX() + this.snakeVelocity.x, this.snake.getY() + this.snakeVelocity.y);
    //verifica se snake esta fora de fronteira
    switch (orientacao) {
    case Top://from w  w w.  j  a  v a  2  s. c  o  m
        if (snake.getHeight() + snake.getY() >= this.screen.viewport.getWorldHeight()) {
            this.snakeVelocity.y = 0;
        }
        break;
    case Right:
        if (snake.getWidth() + snake.getX() >= this.screen.viewport.getWorldWidth()) {
            this.snakeVelocity.x = 0;
        }
        break;
    case Down:
        if (snake.getY() <= 0) {
            this.snakeVelocity.y = 0;
        }
        break;
    case Left:
        if (snake.getX() <= 0) {
            this.snakeVelocity.x = 0;
        }
        break;
    }

    // verifica se matou um inimigo
    for (int i = 0; i < enemies.size; i++) {
        Sprite sprite = enemies.get(i);
        // se h interseo entre o retngulo da sprite e da snake,
        // o tiro acertou
        if (sprite.getBoundingRectangle().overlaps(snake.getBoundingRectangle())) {
            // contabiliza um inimigo morto
            this.enemiesKilled++;
            // remove o inimigo do array
            this.enemies.removeValue(sprite, true);
            cariesDyingSound.play();
            // se tiver matado todos os inimigos, o desafio
            // est resolvido
            if (this.enemiesKilled >= this.totalEnemies) {
                super.challengeSolved();
            }
            // pra de iterar, porque seno o tiro pode pegar em mais
            // de um inimigo
            break;
        }
    }
}

From source file:com.minekrash.game.Plataforma.java

public boolean checkCollision(Sprite _sprite, float _speed) {
    if (isAlive) {
        if (plataforma.getBoundingRectangle().overlaps(_sprite.getBoundingRectangle())
                && _sprite.getX() + _sprite.getWidth() - (_sprite.getWidth() / 4) > plataforma.getX()
                && _sprite.getX() + (_sprite.getWidth() / 4) < plataforma.getX() + plataforma.getWidth()

                && _sprite.getY() > plataforma.getY() + (plataforma.getHeight() / 2)

        //&& _sprite.getY() - (_sprite.getHeight() /*/ 2*/) - _speed < plataforma.getY()
        //&& _sprite.getY() > plataforma.getY()
        ) {//from   w w w  .ja  v a2 s. c  om
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

From source file:im.ligas.worms.screen.MainMenuScreen.java

License:Open Source License

private boolean spriteContains(Sprite sprite, Vector3 position) {
    Rectangle boundingRectangle = sprite.getBoundingRectangle();
    return boundingRectangle.contains(position.x, position.y);
}

From source file:se.angergard.game.system.MapControllerSystem.java

License:Apache License

private void checkCollision() {
    //Checks player and enemies

    ScoreComponent scoreComponent = Objects.SCORE_MAPPER.get(player);
    SpriteComponent playerSpriteComponent = Objects.SPRITE_MAPPER.get(player);
    Rectangle playerRectangle = playerSpriteComponent.sprite.getBoundingRectangle();
    playerRectangle.set(playerRectangle.x - 1, playerRectangle.y - 1, playerRectangle.width + 2,
            playerRectangle.height + 2);

    for (int i = 0; i < enemies.size; i++) {
        Entity enemy = enemies.get(i);
        SpriteComponent enemySpriteComponent = Objects.SPRITE_MAPPER.get(enemy);
        Sprite enemySprite = enemySpriteComponent.sprite;

        //Checks if the player has touched any enemy
        if (!alreadyHurted && Intersector.overlaps(playerRectangle, enemySprite.getBoundingRectangle())) {
            alreadyHurted = true;/*from   ww w  . j  a v a 2  s . c om*/
            HealthComponent healthComponent = Objects.HEALTH_MAPPER.get(player);
            healthComponent.health.hurt(1);
            if (healthComponent.health.isDead()) {
                int score = scoreComponent.score;
                int levels = scoreComponent.levels;
                game.setScreen(new GameFinished(game, "You died,\nScore:" + score + "\nLevels:" + levels)); //TODO: Add score
            } else {
                removeAllEnemies();
            }
        }
    }

    @SuppressWarnings("unchecked")
    ImmutableArray<Entity> potentiallyHoleArray = engine.getEntitiesFor(Family.getFor(HoleComponent.class));

    if (potentiallyHoleArray.size() == 0) {
        return;
    }

    Entity hole = potentiallyHoleArray.first();

    SpriteComponent holeSpriteComponent = Objects.SPRITE_MAPPER.get(hole);
    Sprite holeSprite = holeSpriteComponent.sprite;

    Circle circle = new Circle(holeSprite.getX() + holeSprite.getWidth() / 2,
            holeSprite.getY() + holeSprite.getHeight() / 2, holeSprite.getWidth() / 2);

    Array<Entity> enemiesToRemove = new Array<Entity>();

    for (int i = 0; i < enemies.size; i++) {
        Entity enemy = enemies.get(i);
        SpriteComponent enemySpriteComponent = Objects.SPRITE_MAPPER.get(enemy);
        Sprite enemySprite = enemySpriteComponent.sprite;

        if (Intersector.overlaps(circle, enemySprite.getBoundingRectangle())) {
            Box2DComponent enemyBox2DComponent = Objects.BOX2D_MAPPER.get(enemy);
            engine.removeEntity(enemy);
            Box2DUtils.destroyBody(enemyBox2DComponent);
            enemiesToRemove.add(enemy);
            scoreComponent.score += 1;
        }
    }

    for (Entity enemyToRemove : enemiesToRemove) {
        enemies.removeValue(enemyToRemove, true);
    }

    enemiesToRemove.clear();

    //Checks if player fell in the hole

    playerRectangle = playerSpriteComponent.sprite.getBoundingRectangle(); //Recreates it to be bigger, or else collision is weird;
    playerRectangle.set(playerRectangle.x + 6, playerRectangle.y + 6, playerRectangle.width - 12,
            playerRectangle.height - 12);

    if (Intersector.overlaps(circle, playerRectangle)) {
        game.setScreen(new GameFinished(game, "You fell into \nyour own hole.\nNo score for you..."));
    }
}