@Override
    public void step() {
        ticksAlive++;
        xvel = speed * Math.cos(angle);
        yvel = -speed * Math.sin(angle);
        if (isSeeking && ticksAlive < trackingTime)
            seekTarget();
        else if (ticksAlive == trackingTime) {
            sprites = new String[]{sprites[0]};
            spriteIndex = 0;
            updateSprite(sprites[0]);
        }
        super.step();
        if (!onScreen())
            kill();
        for (Ship that : world.getShips()) {
            if (that.isHit(this))
                explode(that);
        }
        if (sprites.length > 1) {
            spriteIndex++;
            if (spriteIndex >= sprites.length)
                spriteIndex = 0;
            updateSprite(sprites[spriteIndex], Anchor.TOP_CENTER);
        }
    }