one gameobject instantiaton not 100

I have this script here:

#pragma strict

public var bombRange=1;
public var maxBombs;

var speed : float = 15.0;
var gravity : float = 20.0;
var bombPrefab : GameObject;
var smallBomb:GameObject;
var hit : RaycastHit;  
private var moveDirection : Vector3 = Vector3.zero;

function Update() {
    var controller : CharacterController = GetComponent(CharacterController);
    
    if (controller.isGrounded) {
        moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
                                Input.GetAxis("Vertical"));
        moveDirection = transform.TransformDirection(moveDirection);
        moveDirection *= speed;
        
    }
    moveDirection.y -= gravity * Time.deltaTime;
    controller.Move(moveDirection * Time.deltaTime);
    var spawnBomb = GameObject.Find("spawn_point").transform.position;
    if(Input.GetKeyDown("space")){
       var temp=Instantiate (bombPrefab,spawnBomb,Quaternion.identity);
       Destroy(temp,3);
      }
      if(temp==null){
          var bmb=Instantiate(smallBomb,GameObject.Find("downSpawn").transform.position,Quaternion.identity);
          bmb.rigidbody.AddForce(transform.forward*100);
    }
}

Now when it instantiates the bmb var and aplies force to it, it will instantiate 100 bmb's.
I only need just one. How am i doing it wrong?

Well for starters you’re instantiating your bomb in every frame by using it in the Update Function. I didn’t test this… but what you should do is use another function and place your bomb instantiation inside of that function:


controller.Move(moveDirection *Time.deltaTime);
SpawnBomb();

function SpawnBomb() {
** then put in all of your code relating to the bomb (var spawnBomb = GameObject.Find… etc)

Just a guess, but try changing

bmb.rigidbody.AddForce(transform.forward*100);

to

bmb.rigidbody.AddForce(transform.forward*1);

And see how that works out?

Solved:

#pragma strict

public var bombRange=1;
public var maxBombs;

var speed : float = 15.0;
var gravity : float = 20.0;
var bombPrefab : GameObject;
var smallBomb:GameObject;
var hit : RaycastHit;  
private var moveDirection : Vector3 = Vector3.zero;

function Update() {
    var controller : CharacterController = GetComponent(CharacterController);
    
    if (controller.isGrounded) {
        moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
                                Input.GetAxis("Vertical"));
        moveDirection = transform.TransformDirection(moveDirection);
        moveDirection *= speed;
        
    }
    moveDirection.y -= gravity * Time.deltaTime;
    controller.Move(moveDirection * Time.deltaTime);
    SpawnBomb();  
}
function SpawnBomb(){
    var spawnBomb = GameObject.Find("spawn_point").transform.position;
    if(Input.GetKeyDown("space")){
          var temp=Instantiate (bombPrefab,spawnBomb,Quaternion.identity);
    
          yield WaitForSeconds (2.99);
          var bmb1=Instantiate(smallBomb,GameObject.Find("upSpawn").transform.position,Quaternion.identity);
          bmb1.rigidbody.AddForce(0,0,10000);
          Destroy(bmb1,bombRange);
          var bmb2=Instantiate(smallBomb,GameObject.Find("downSpawn").transform.position,Quaternion.identity);
          bmb2.rigidbody.AddForce(0,0,-10000);
          Destroy(bmb2,bombRange);
          var bmb3=Instantiate(smallBomb,GameObject.Find("leftSpawn").transform.position,Quaternion.identity);
          bmb3.rigidbody.AddForce(-10000,0,0);
          Destroy(bmb3,bombRange);
          var bmb4=Instantiate(smallBomb,GameObject.Find("rightSpawn").transform.position,Quaternion.identity);
          bmb4.rigidbody.AddForce(10000,0,0);
          Destroy(bmb4,bombRange);
          Destroy(temp);
      }    
}

I hope someone can learn from my mistakes