cannot set velocity or rotation outside on in Start()

the Player object can instantiate Fireball Objects. if I put the code to set velocity in the Start() method, it works as intended. however I want to be able to set speed (and eventually other variables as well) through methods. why is this simple code not working? it instantiates a fireball with no speed.

using UnityEngine;
using System.Collections;

public class Fireball : MonoBehaviour
{
    private Rigidbody2D myRigidBody;

    void Start ()
    {       
        myRigidBody = GetComponent<Rigidbody2D> ();           
    }

    public void fire (float speed)
    {
        myRigidBody.velocity = new Vector2 (0, 1) * speed;
    }
}

Use FixedUpdate() to change physics properties on the Rigidbody2D.

And imo you should use AddForce instead of trying to set velocity directly.

It should work though, even on Update.

Are you sure fire is being called? Are you sure gravity isn’t actually immediately overcoming the 1f upward velocity? Is your RigidBody2D set to kinematic?