- Home /
Projectile Shooting Problem
I am using unity to create a penalty shoot-out game. I also have a power bar in the scene. Now when I click to shoot the ball, the first time , two balls are going off simultaneously . I would like only one ball to be shot . Thanks , and here is my script;
 #pragma strict
 
 // maximum width of the powerbar 
 var fullWidth : float = 256;
  
 //create a boolean flag we can use to stop and start the choosing of power
 var choosing : boolean = false;
  
 //create a private variable (not shown in inspector) to store the current set power
 private var thePower : float;
  
 //create a slot to assign my ball prefab to.
 var ball : Rigidbody;
  
 //create a slot to assign an empty game object as the point to spawn from
 var spawnPos : Transform;
 var staffingSpeed ;
  
 // create a number to multiply the force by as the value of up to 256 may not be enough to
 // effectively shoot a ball forward
 var shotForce : float = 5;
  
 function Update () {
  
  
  // detect if key is released and then call the Shoot function, passing the current
  // value of 'thePower' variable into it's 'power' argument
  if(Input.GetButtonUp("Jump")){
   Shoot(thePower);
  }
  
  if(!choosing){
   //create a power variable and set it to ping pong function
   //from current time to 1, and multiply that by a number (or variable holding a number)
   thePower = Mathf.PingPong(Time.time, 1) * fullWidth;
  
   //set the width of the GUI Texture equal to that power value
   guiTexture.pixelInset.width = thePower;
  }
 }
  
 // start the 'Shoot' custom function, establish a
 // float variable to be fed with a number when function is called
 function Shoot(power : float){
  
  
  //create a ball, assign the newly created ball to a var called pFab
  var pFab : Rigidbody = Instantiate(ball, spawnPos.position, spawnPos.rotation);
  
  //find the forward direction of the object assigned to the spawnPos variable
  var fwd : Vector3 = spawnPos.forward;
  pFab.AddForce(fwd * power*shotForce);
  
  //pause before resuming the power bar motion
  yield WaitForSeconds(2);
  
  
 }
What is yield WaitForSeconds 2 doing there?
WaitForSeconds is exceptionally poorly named and part of a poorly thought out set of 'coroutine' features. Its very likely you are using it incorrectly.
Answer by Inkinsarto · Jan 08, 2014 at 03:30 PM
Check and make sure you do not already have a ball, in the scene before you run the game.
I have one ball , and one empty game object so that the ball will re spawn there. Is that good?
Being that a ball is there before the game runs, it will act with similar properties to a regular ball when fired. $$anonymous$$ake the ball a prefab, (if not already) then delete it in the scene view. Just don't mess with the empty game object for spawning.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                