Example usage for com.badlogic.gdx.math Vector2 setAngle

List of usage examples for com.badlogic.gdx.math Vector2 setAngle

Introduction

In this page you can find the example usage for com.badlogic.gdx.math Vector2 setAngle.

Prototype

public Vector2 setAngle(float degrees) 

Source Link

Document

Sets the angle of the vector in degrees relative to the x-axis, towards the positive y-axis (typically counter-clockwise).

Usage

From source file:com.github.skittishSloth.openSkies.battles.ships.PlayerShip.java

public void render(final SpriteBatch batch, final float delta) {
    final TextureRegion curFrame = getCurrentFrame(delta);
    final int width = curFrame.getRegionWidth();
    final int height = curFrame.getRegionHeight();
    final float originX = width / 2;
    final float originY = height / 2;

    final Vector2 origin = new Vector2(originX, originY);
    origin.add(position);// ww w. jav  a 2  s  .  co  m
    final Vector2 lo = laserOffset.cpy();
    lo.setAngle(rotation + 90);
    lo.add(origin);

    laserPosition.set(lo);
    batch.draw(curFrame, position.x, position.y, originX, originY, width, height, 1.0f, 1.0f, getRotation());
}

From source file:jordanlw.gdxGame.Game.java

License:Open Source License

public void render() {
    Vector2 bulletVector = new Vector2();
    Vector2 relativeMousePosition = new Vector2();
    Vector2 distanceToMouse = new Vector2();
    Boolean gunFiredThisFrame = false;
    float delta = Gdx.graphics.getDeltaTime();
    movementThisFrame = false;//  ww  w. j ava2s  . c o  m

    Gdx.gl.glClearColor(0, 0, 0, 0);
    Gdx.gl.glClear(0);
    handleEnemyWaves();

    //Handle player wanting to pause
    if (Gdx.input.isKeyJustPressed(Input.Keys.P)) {
        if (gamePaused) {
            if (!isGameCreated) {
                setupGame();
            }
            gamePaused = false;
            aMusicLibrary.backgroundMusic.play();
        } else {
            gamePaused = true;
            aMusicLibrary.backgroundMusic.pause();
        }
    }

    //Does the user want multiplayer?
    if (Gdx.input.isKeyJustPressed(Input.Keys.M)) {
        NetworkSetup.getTextInput("Multiplayer Network Address");
    }

    if (Gdx.input.isKeyJustPressed(Input.Keys.H)) {
        NetworkSetup.getAnswer("Host Multiplayer?");
    }

    if (!gamePaused) {
        totalTime += delta;
        for (Player player : players) {
            player.secondsDamaged -= delta;
        }
        //Update player rotation wrt mouse position
        getLocalPlayer().rotation = (float) Mouse
                .angleBetween(getLocalPlayer().position.getPosition(new Vector2()));

        Zombie.zombeGroanSoundTimer += delta;
        if (Zombie.zombeGroanSoundTimer > 6f) {
            int index = (int) (Math.random() * (aMusicLibrary.zombieSounds.length - 1));
            aMusicLibrary.zombieSounds[index].setVolume(aMusicLibrary.zombieSounds[index].play(),
                    0.5f * volume);
            Zombie.zombeGroanSoundTimer = 0;
        }

        handleInput(relativeMousePosition, mousePressedPosition, distanceToMouse, bulletVector);

        //Anything serverside eg. enemy movement, medkit respawning.
        if (isServer) {
            if (!aMusicLibrary.backgroundMusic.isPlaying()) {
                for (Player player : players) {
                    player.health = 0;
                }
            }
            for (Player player : players) {
                medkit.time += delta;
                if (medkit.time > Medkit.SECS_TILL_DISAPPEAR && medkit.health <= 0) {
                    medkit.health = Medkit.healthGiven;
                    medkit.position.setPosition((float) (camera.viewportWidth * Math.random()),
                            (float) (camera.viewportHeight * Math.random()));
                } else if (medkit.time >= Medkit.SECS_TILL_DISAPPEAR
                        && player.position.overlaps(medkit.position)) {
                    player.health += medkit.health;
                    medkit.health = 0;
                    medkit.time = 0;
                    aMusicLibrary.medkitSound.play(0.3f * volume);
                    if (player.health > 100) {
                        player.health = 100;
                    }
                }

                for (Zombie enemy : enemies) {
                    if (enemy.health <= 0) {
                        continue;
                    }
                    enemy.secondsDamaged -= delta;

                    Vector2 vecPlayer = new Vector2();
                    Vector2 vecEnemy = new Vector2();
                    enemy.position.getPosition(vecEnemy);
                    player.position.getPosition(vecPlayer);

                    Vector2 tmpEnemy = new Vector2(
                            vecPlayer.sub(vecEnemy).nor().scl(delta * enemy.walkingSpeed));
                    if (player.position.getPosition(new Vector2())
                            .dst(enemy.position.getPosition(new Vector2())) < 300) {
                        tmpEnemy.rotate(enemy.swarmAngle);
                    }

                    enemy.rotation = tmpEnemy.angle();
                    tmpEnemy.add(enemy.position.x, enemy.position.y);
                    enemy.position.setPosition(tmpEnemy);
                }
            }
        }
        //Respond to player pressing mouse button
        if (mousePressedPosition.x != -1 && mousePressedPosition.y != -1 && getLocalPlayer().health > 0) {
            //Gun sound for player
            if (totalTime > timeGunSound) {
                timeGunSound = totalTime + 0.5f;
                aMusicLibrary.gunSound.play(0.25f * volume);
                //aMusicLibrary.gunSound.setPitch(soundId, 1 + (long) (0.3f * Math.random()));
                gunFiredThisFrame = true;
                shootingTime = torsoAnimLength;
                Collections.sort(enemies, new ZombieDistance());
                for (Zombie enemy : enemies) {
                    if (enemy.health <= 0) {
                        continue;
                    }

                    Vector2 vecPlayer = new Vector2();
                    getLocalPlayer().position.getCenter(vecPlayer);

                    float angle = (float) Mouse.angleBetween(vecPlayer);
                    Vector2 vecAngle = new Vector2(vecPlayer);
                    Vector2 tmp = new Vector2(1, 1);
                    tmp.setAngle(angle).nor().scl(98765);
                    vecAngle.add(tmp);

                    if (Intersector.intersectSegmentCircle(vecPlayer, vecAngle,
                            enemy.position.getCenter(new Vector2()),
                            (enemy.position.width / 2) * (enemy.position.width / 2))) {
                        enemy.secondsDamaged = 0.5f;
                        enemy.health -= 35;
                        if (enemy.health <= 0) {
                            gold.saveEnemy(currentWave, enemies.indexOf(enemy));
                        }
                        break;
                    }
                }
            }
        }
    }
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    batch.setColor(Color.WHITE);
    for (int width = 0; width < windowSize.x; width += backgroundTexture.getWidth()) {
        for (int height = 0; height < windowSize.y; height += backgroundTexture.getHeight()) {
            batch.draw(backgroundTexture, width, height);
        }
    }
    medkit.draw(batch);
    gold.draw(batch);

    //Draw enemies
    for (Zombie enemy : enemies) {
        enemy.draw(batch, totalTime);
    }
    batch.setColor(Color.WHITE);

    for (Player player : players) {
        player.draw(batch, totalTime, delta);
    }

    if (getLocalPlayer().health <= 0) {
        batch.draw(gameOverTexture, camera.viewportWidth / 2 - gameOverTexture.getWidth() / 2,
                camera.viewportHeight / 2 - gameOverTexture.getHeight() / 2);
    } else if (gamePaused) {
        batch.draw(gameStartTexture, camera.viewportWidth / 2 - gameStartTexture.getWidth() / 2,
                camera.viewportHeight / 2 - gameStartTexture.getHeight() / 2);
    }

    batch.setColor(Color.YELLOW);
    if (gunFiredThisFrame) {
        //noinspection SuspiciousNameCombination
        batch.draw(singlePixel, getLocalPlayer().position.x, getLocalPlayer().position.y, 0, 0, 1, 1, 1,
                distanceToMouse.x, 180 + (float) Math.toDegrees(
                        Math.atan2((double) relativeMousePosition.x, (double) relativeMousePosition.y)));

    }
    batch.end();

    isLeftMousePressedThisFrame = false;
    mousePressedPosition.set(-1, -1);
}