- Home /
 
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?
Answer by s_aint47 · Apr 08, 2012 at 10:51 AM
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
Answer by stingman · Apr 07, 2012 at 11:00 PM
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)
Your right about the multiple instantiation in the update function, but if i put the spawnBomb(); in the update function it will be the same thing. Also ty for your implication.
Answer by FizzyBear · Apr 08, 2012 at 01:00 AM
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?
Ty for your answer but the *1 and *100 is the force that is applied the the rigid body(the current speed of the bmb 100). Also i've noticed that piece of code wont apply the force that i want; if i can make only one bomb to be instantiated it wont have speed, so 0 100 is still 0;
Your answer
 
             Follow this Question
Related Questions
Rotation problem with spawning bullet 2 Answers
Addforce to RigidBody problem 1 Answer
instantiate finding upstream velocity 1 Answer
Instantiated Bullet Force not being applied 0 Answers
Projectile not moving properly in top down 2d shooter 2 Answers