If(Input.GetKeyDown(KeyCode.G)) when G pressed does function multiple times

When I press G

	void FixedUpdate()
	{
	Debug.Log (slowMo);
		if(Input.GetKeyDown (KeyCode.G))
		{
			Debug.Log ("G pressed");
			if(slowMo > 0)
			{	
				StartCoroutine(slowMotionNotEnemy());
				EnemyScript[] enemies = GameObject.FindObjectsOfType(typeof(EnemyScript)) as EnemyScript[];
				foreach (EnemyScript enemy in enemies)	
				{
					enemy.slowMotion();	
				}
				slowMo -= 1;
			}
		}
	}

it say “G pressed” 3-4 times

How do I make it so it only does it once?

Move your code from FixedUpdate to Update and see how that goes. Input.GetKeyDown returns true if the button in question was pressed during the current frame, and FixedUpdate can be called multiple times per-frame.

Now it did it twice, a problem, as this is a powerup in my game, and my users should expect to loose one usage of this power up not 2

Script applied to more than one object?

Omg, I’m an idiot -.- thanks for pointing that out