public void update(Player player, float delta) { // // body.getPosition().set(body.getPosition().x+(body.getPosition().x-player.getX())*delta,body.getPosition().y); if (player.getX() < body.getPosition().x) body.applyForceToCenter(new Vector2(-10, 0), true); else { body.applyForceToCenter(new Vector2(10, 0), true); } }
private void inputUpdate(float deltaTime) { float horizontalForce = 0; if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) { horizontalForce -= 1f; } if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) { horizontalForce += 1f; } if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) { player.applyForceToCenter(0, 50, false); } player.setLinearVelocity(horizontalForce * 5, player.getLinearVelocity().y); }
@SuppressWarnings("Duplicates") public void handleContact(Body a, Body b) { boolean playerHitAsteroid = (WorldHandler.isAsteroid(a) && WorldHandler.isPlayer(b)) || WorldHandler.isPlayer(a) && WorldHandler.isAsteroid(b); boolean bulletHitAsteroid = (a.isBullet() && WorldHandler.isAsteroid(b)) || b.isBullet() && WorldHandler.isAsteroid(a); boolean playerHitPickup = (WorldHandler.isPlayer(a) && WorldHandler.isPickup(b)) || (WorldHandler.isPickup(a) && WorldHandler.isPlayer(b)); Body asteroid; Body player; final Body bullet; if (playerHitAsteroid) { if (WorldHandler.isAsteroid(a)) { asteroid = a; player = b; } else { asteroid = b; player = a; } PlayerActorData p_data = (PlayerActorData) player.getUserData(); AsteroidActorData a_data = (AsteroidActorData) asteroid.getUserData(); if (a_data.subHealth(5) <= 0) { a_data.isRemoved = true; stage.addDead(asteroid); } asteroid.applyForceToCenter(new Vector2(0, 100f), true); if (p_data.subHealth(a_data.getDamage()) <= 0) { // game over Gdx.app.log("plr", "plr dead"); // todo player death } if (infoLabel != null) infoLabel.setText("Player HP: " + p_data.getHealth()); playerHPBar.setBarWidth((int) p_data.getHealth()); } if (bulletHitAsteroid) { if (a.isBullet()) { bullet = a; asteroid = b; } else { bullet = b; asteroid = a; } ActorData b_data = (ActorData) bullet.getUserData(); AsteroidActorData a_data = (AsteroidActorData) asteroid.getUserData(); new Timer() .scheduleTask( new Timer.Task() { @Override public void run() { createExplosion(bullet.getPosition().x + 1f, bullet.getPosition().y + 0.7f); } }, 0.05f); b_data.isRemoved = true; stage.addDead(bullet); playerHandler.addCurrency(2); if (a_data.subHealth(WorldHandler.getProjectileDamage(bullet)) <= 0) { Gdx.app.log("OGH", "Asteroid dead - Spawn pickup?"); if (random.nextInt(100) > 70) { final Body finalAsteroid = asteroid; new Timer() .scheduleTask( new Timer.Task() { @Override public void run() { createPickup(finalAsteroid.getPosition().x, finalAsteroid.getPosition().y); } }, 2); } stage.addDead(asteroid); a_data.isRemoved = true; } } Body pickup; if (playerHitPickup) { if (WorldHandler.isPlayer(a)) { player = a; pickup = b; } else { player = b; pickup = a; } PickupData pData = (PickupData) pickup.getUserData(); PlayerActorData plData = (PlayerActorData) player.getUserData(); pData.isRemoved = true; stage.addDead(pickup); if (pData.getType().equals(Constants.CURRENCY_PICKUP_ASSET_ID)) playerHandler.addCurrency(100); else plData.addHealth(50); // todo magic numbers } }
public void moveBody(Body body, Vector2 direction) { body.applyForceToCenter(direction, true); }