Instantiated Object Spawning in different position

I am trying to spawn a fireball whenever the ‘F’ key is pressed, but every time I press the F key, the fireball spawns at a different place on the Y-axis. Any thoughts?
Player Attack Script

using UnityEngine;
using System.Collections;

public class PlayerAttack : MonoBehaviour {
    public float attackTimer;
    public float coolDown;
    public float damage;
    public Rigidbody projectile;
    public float speed = 0.1f;
    Rigidbody fireball;
    public Transform fireBallSpawn;

	void Start () {
        attackTimer = 1;
        coolDown = 0.5f;
        damage = 5.0f;
	}
	
	void Update () {
        if (attackTimer > 0) {
            attackTimer -= Time.deltaTime;
        }
        if (attackTimer < 0) {
            attackTimer = 0;
        }
        if (Input.GetKeyUp(KeyCode.F))
        {
            if (attackTimer == 0) {
                Attack();
                attackTimer = coolDown;
            }
        }
	}

    private void Attack() {
        fireball = Instantiate(projectile, fireBallSpawn.position, fireBallSpawn.rotation) as Rigidbody;
        fireball.velocity += transform.forward * 5;
        Destroy(fireball.gameObject, 2.0f);
    }
}

At the bottom of the screen, the console is printing the y-axis for the spawner.

Nothing here appears to clearly suggest that the fireballs would be created in different locations each time, so my main two questions are:

1 - Does the fireBallSpawn position ever change in a way that’s reflected by what you’re experiencing

2 - Are the fireballs’ colliders inside anything else when they’re created and, if so, is that shoving them out quickly to another position immediately after spawning?

If it’s neither of those, then I don’t believe it would be feasible to provide a more accurate answer with the current information available.

I’m not completely sure as to what you mean, but you could try:

	fireball = Instantiate(projectile, fireBallSpawn.position, fireBallSpawn.rotation) as Rigidbody;
	fireball.AddForce (fireBallSpawn.forward * 5);

            Destroy(fireball.gameObject, 2.0f);

the major thing that I changed was now it’s working off the fireBallSpawn position instead of the transfom that may or may not be changing. the 5 in the AddForce part can be changed to velocity as well, but for Instantiate I prefer to use AddForce