Multiplying something.forward using a variable doesn't actually multiply, but multiplying by a number does.

So I have an instanciation and I set the velocity of the object with this:

plasma_instance.velocity = (shooting_origin.forward * bullspeed_plasma);

And the object does travel forward from the shooting_origin, but no matter how high the bullspeed_plasma (float) is, it still travels with the same speed.

But wait, there’s more…
When I multiply it by a number:

plasma_instance.velocity = (shooting_origin.forward * 30);


plasma_instance.velocity = (shooting_origin.forward * 400);

…then the velocity is different, as expected. So my question is how to multiply it by a variable?

If bullspeed_plasma is a public float then the value in the Inspector will overwrite any starting value you may have inside the script.

For example, you put this script on a GameObject.

public class Test : MonoBehaviour {

    public float bullspeed_plasma = 1f;

and then you decided to change the value in the script, say 100

    public float bullspeed_plasma = 100f;

The value will be 1f when you play the game, because 1f was the last value set in the inspector.

I’m only guessing this was the issue, I’m not really sure what’s going on from the provided code. You can multiply a forward with a variable, so that’s not the issue. Something else is going on. Try adding Debug.Log and see if anything sticks out