- Home /
Why does this script lag so much?
When I run this script the whole game lags a lot. I don't have any graphics just a bunch of cubes, 3 to be exact. Here it is:
//this is the player we are targeting
var target : Transform;
//this is the speed that the enemy walks
var walkingSpeed : float;
 function Update () {
 
 //variables that are going to be used throughout the script
 var fwd : Vector3 = transform.TransformDirection(Vector3.forward);
 var collider : CharacterController = GetComponent(CharacterController);
 var ourX : int = transform.position.x;
 var ourZ : int = transform.position.z;
 var theirX : int = target.position.x;
 var theirZ : int = target.position.z;
 
     //this makes the enemy move towards the player
     
         //this makes the enemy move forward
         collider.SimpleMove(walkingSpeed * fwd * Time.deltaTime);
         
         //makes the enemy look at the player
         //first quadrant
         if(theirZ > ourZ && theirX < ourX) {
         
             print(1);
         }
         
         if(theirZ > ourZ && theirX > ourX) {
         
             print(2);
         }
         
         if(theirZ < ourZ && theirX < ourX) {
         
             print(3);
         }
         
         if(theirZ < ourZ && theirX > ourX) {
         
             print(4);
         
         }
             
         
     
         
         
         
         
}
@script RequireComponent(CharacterController)
Thanks! I don't really want a fix to this script, I just want to know whats lagging so I don't do this again.
Answer by rabbitfang · Feb 25, 2012 at 01:31 AM
It lags because you are printing to console every frame (times 3). Printing something to console takes a lot of time (relatively) and so when you do this every frame, things start to slow down.
Try to limit the amount you are printing.
Answer by jaised · Feb 25, 2012 at 01:25 AM
I may not be correct in this, but try debugging and see what collider variable you actually get at line: collider.SimpleMove(walkingSpeed * fwd * Time.deltaTime); collider is a variable used within GameObject itself so it may be referencing that instead which may cause some weird things. Or does the program act the way you think it should?
EDIT: Also, in your Update() you are getting the CharacterController every update call which means every frame, so that eats a lot of time. Therefore, what you should do is remove that line from Update() and put it in a new function Start(); like so: (also rename collider to controller, or something)
private var controller : CharacterController;
function Start() {
    controller = GetComponent(CharacterController);
    if(!controller)
        Debug.Log("Cannot find player controller.");
}
Your answer
 
 
             Follow this Question
Related Questions
Android lag 1 Answer
WebGl Using too much memory 1 Answer
Very Bad Lag from ~20 Large Particles 0 Answers
OnTriggerEnter causing lag spike? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                