//Enemy missile acts as an enemy instead of a bullet, since it must be shot by the player. package com.spaceshooter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Vector2; public class EnemyMissile extends Enemy { private final float HOMING_SPEED; private ParticleEffect particle; private Vector2 vectorV; EnemyMissile() { super(1, ResourceManager.Missile); setRotation(getRotation() + 180); HOMING_SPEED = SpaceShooter.getBulletSpeed() * 2.0f; particle = new ParticleEffect(); vectorV = new Vector2(); particle.load(Gdx.files.internal(ResourceManager.MissileParticle), Gdx.files.internal("media")); for (int i = 0; i < particle.getEmitters().size; i++) { particle.getEmitters().get(i).getTint() .setColors(new float[] { 125, 0f, 0f, 125f }); } } public void updateEnemy(Player player, BulletManager bulletManager) { if (player != null) { // Point the enemy towards the player. rotateTowardsFlipped(player); // Move the enemy towards the player. vectorV = moveTowards(HOMING_SPEED,player); } else { translate(vectorV.x,vectorV.y); } } public void drawParticle(SpriteBatch batch) { particle.setPosition(getX() + (getTexture().getWidth() / 2), getY() + (getTexture().getHeight() / 2)); // set the particle's // position to for (int i = 0; i < particle.getEmitters().size; i++) { particle.getEmitters().get(i).getAngle().setLow(getRotation() - 270); // minimum angle particle.getEmitters().get(i).getAngle().setHigh(getRotation() - 270); // maximum angle } particle.draw(batch, Gdx.graphics.getDeltaTime()); } public void draw(SpriteBatch batch) { super.draw(batch); drawParticle(batch); } }