why is part of my script getting called as if it was in the Start function?

so this is the script, it’s the basic explosion script from the Unity scripting reference.
the problem is that as soon as the game starts, blocks go flying; it completely ignores whether I’ve pressed the button down or not.

using UnityEngine;
using System.Collections;

public class Explode : MonoBehaviour 
{


  	public float radius = 6.0F;
    public float power = 10.0F;

    void Update() 
	{
		if(Input.GetKeyDown (KeyCode.E))
		{
			Debug.Log ("called");
	        Vector3 explosionPos = transform.position;
	        Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
	        foreach (Collider hit in colliders) {
            if (!hit)
            
            if (hit.rigidbody)
                hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 3.0F);
			}
        }
    }

}

flying how?

is it possible that you somehow put rigidbodies inside of one another, and they are simply responding to the collision?

does your debug log get outputted?

Hmm you have some strange spacing in your code

using UnityEngine;
using System.Collections;
public class Explode : MonoBehaviour
{
	public float radius = 6.0f;
	public float power = 10.0f;
	void Update()
	{
		if(Input.GetKeyDown(KeyCode.E))
		{
			Debug.Log("called");
			Vector3 explosionPos = transform.position;
			Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
			foreach(Collider hit in colliders){
				if (!hit)
					if(hit.rigidbody)
						hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 3.0F);
			}
		}
	}
}

This should be working, if it’s not, then it’s probably because you have another script causing this problem.