#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:
#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