I have this really awkward situation that I have been confused about for a week or so. I have a good 30 or so circles being moved around just like a space invaders game. When the game starts, they are supposed to move really slow, and every one you take out, the speed of it goes up a little bit.
This is were my problem lies. It stays normal while there is about a half of them left. After that, they all slow down, and in my script, I told them to speed up. Could it be because of the rigidbodys, or is there something else you can think of?
I am really confused with this 
if your using a update function that updates a variable you are using for velocity, it could go faster if you have higher fps.
else i belive you need to post some script.
The control script itslef:
static var moveH = 0.01;
static var moveV = -0.01;
static var setDir = "a";
static var numH = 0.01; //POSITIVE NUMBERS
static var numHN = -0.01; //NEGATIVE NUMBERS
static var numV = -0.2; //DOWN
static var num = 0.01;
//a == right
//b == down right
//c == left
//d == down left
function Update(){
var all : GameObject[] = GameObject.FindGameObjectsWithTag("alien");
if(setDir == "a"){
for(var alien : GameObject in all){
moveH = numH;
moveV = 0;
alien.transform.Translate(moveH * num, 0, 0);
}
}
else if(setDir == "b"){
for (var alien : GameObject in all){
moveH = 0;
moveV = numV;
alien.transform.Translate(0, moveV * Time.deltaTime / 3, 0);
}
goDown();
}
else if(setDir == "c"){
for(var alien : GameObject in all){
moveH = numHN;
moveV = 0;
alien.transform.Translate(moveH * num, 0, 0);
}
}
else if(setDir == "d"){
for(var alien : GameObject in all){
moveH = 0;
moveV = numV;
alien.transform.Translate(0, moveV * Time.deltaTime / 3, 0);
}
goDown2();
}
}
function OnCollisionEnter( other : Collision ){
if(other.gameObject.tag == "wall_one"){
setDir = "b";
}
else if(other.gameObject.tag == "wall_two"){
setDir = "d";
}
}
function goDown(){
yield WaitForSeconds(0.2);
setDir = "c";
moveH = numH;
moveV = 0;
}
function goDown2(){
yield WaitForSeconds(0.2);
setDir = "a";
moveH = numH;
moveV = 0;
}
The Destroy script:
var explosion : Transform;
static var counter = 36;
function OnTriggerEnter( other : Collider ){
if(other.gameObject.tag == "alien"){
Destroy(other.gameObject);
Destroy(gameObject);
counter -= 1;
alien_control.num += 0.015;
if(counter == 5){
alien_control.num += 0.02;
alien_control.numH = 0.02;
alien_control.numHN = -0.02;
}
else if(counter == 4){
alien_control.num += 0.04;
alien_control.numH = 0.04;
alien_control.numHN = -0.04;
}
else if(counter == 3){
alien_control.num += 0.06;
alien_control.numH = 0.06;
alien_control.numHN = -0.06;
}
else if(counter == 2){
alien_control.num += 0.08;
alien_control.numH = 0.08;
alien_control.numHN = -0.08;
}
else if(counter == 1){
alien_control.num += 0.3;
alien_control.numH = 0.3;
alien_control.numHN = -0.3;
}
print(alien_control.num);
var exp = Instantiate(explosion, gameObject.transform.position, Quaternion.identity);
move.letter = "a";
}
}
function Awake () {
des();
}
function des(){
yield WaitForSeconds(1.5);
Destroy(gameObject, 0);
move.letter = "a";
}
im no superProgrammer, so have no hopes in me. but why is the “num” in the direction “a” in the counter at the end? its included in the translation of direction a, and in the count number. it changes speed depending on count?!
try to break the code segments down that you know can change speed. then its easier for you to clear out what is causing it.
I want it so when there is 5 left, they speed up a little bit, and again when one more is killed etc…
BTW, sorry for my horrible programing… I never was really good at making a script that makes sense 
You have to use Time.deltaTime, or else your movement is framerate-dependent. Also, doing FindGameObjectsWithTag every frame is pretty slow.
–Eric
How could I move it so it does not get called every frame? I tried to make it a static variable, and it somehow crashed unity…
Placing it in a Start, and Awake function didn’t work either :0
Anyone know where I should place it?