- Home /
How can I improve this code?
This is a javascript script that spawns certain objects based on what number the timer starts and spawns the objects every x seconds in 2 different locations. For some reason this code keeps crashing my macbook so it's really annoying and I don't know how to improve it better because I am fairly new to javascript. Here is the script:
#pragma strict
var spawning : boolean = false;
var spawn1 : Transform;
var spawn2 : Transform;
var timer : float;
var green : Rigidbody[];
var build : Rigidbody[];
var buildr : Rigidbody[];////for objects on the right
var index : int;
var indexr : int;
var whatSpawn: float;///what objects to start spawning
var objgreen : Rigidbody;
var objbuild : Rigidbody;
var objbuildr : Rigidbody;
public static var picker : int;///used in objects moving script
function Start(){
whatSpawn = Mathf.Abs(Random.Range(0,60));
}
function FixedUpdate ()
{
whatSpawn += Time.deltaTime;
if(!spawning){
timer += Time.deltaTime;
}
if(timer >= 0.5f){
Spawn();
}
}
function Spawn()
{
spawning = true;
timer = 0;
var randomPick : int = Mathf.Abs(Random.Range(0,3));///decides where objects will spawn
var location : Transform ;
if(randomPick == 1 ){
location = spawn1;
picker = 1;
}
else if(randomPick == 2 ){
location = spawn2;
picker = 2;
}
if(spawning == true){
if(whatSpawn > 0 && whatSpawn < 20 ){
index = Random.Range (0, green.Length );
objgreen = green[index];
objgreen = Instantiate(objgreen,location.position,location.rotation);
objgreen.AddForce(Vector3(0,0,100));
}
if(whatSpawn > 20 ){
index = Random.Range (0, build.Length);
indexr = Random.Range (0, buildr.Length);
objbuild = build[index];
objbuildr = buildr[indexr];
objbuild = Instantiate(objbuild,spawn1.position,spawn1.rotation);
objbuildr = Instantiate(objbuilds,spawn2.position,spawn2.rotation);
}
if(whatSpawn >= 40){//////dont let whatSpawn go over 40
gren = 0;
}
}
//halt script for 1 second before returning to the start of the process
//set spawning back to false so timer may start again
spawning = false;
}
Answer by lauti_nipi · Mar 26, 2016 at 06:48 PM
Why are you using FixedUpdate() instead of regular Update()?
FixedUpdate() is called every fixed framerate frame. It's generally used to interact with RigidBodys and physics.
Update() is called every frame.
Here is a video explaining the differences: link text
I'll first of all try to see how the game behaves this way.
Your answer
Follow this Question
Related Questions
Spawn script on mesh crashes Unity 0 Answers
Why does Unity crash with this code ? 2 Answers
Save GameObject to file without Playerpref 0 Answers
Unity Crashing issue 0 Answers
Unity 5.4.1 Build Process Crashes While Building Scene 1 Answer