- Home /
Stop moving GameObject
Hello everyone. I'm making a 2D shooter in which my enemy spawns at the top of the screen and moves down, until it's off the screen and is destroyed. I want the enemy to stop at a random point along the z axis. I figured I could do this by setting the speed variable to 0 to stop the movement but I think they're something wrong with the way I'm trying to do it.
private var rocketBoatSpeed:float;
private var random:float;
function Awake(){
random = Random.Range(2.075055, -1.754556);
rocketBoatSpeed = -1;
}
function Update () {
if(transform.position.z == random){
print("here");
rocketBoatSpeed = 0;
}else if(gameObject.transform.position.z != random){
transform.Translate(0,0,rocketBoatSpeed * Time.deltaTime);
}
if(transform.position.z < -2.04){
GameController.totalEnemies--;
Destroy(gameObject);
}
}
Answer by kolban · May 09, 2012 at 10:16 PM
Looking at your code, I see you are generating a random number between -1.754.. and 2.075... for the Z position. You are then asking your object to stop where it is exactly that random number. The problem is that the Z position of your object is unlikely to be exactly that number ever. Ask yourself ... from what direction (numerically) am I approaching my random number ... if from above, then your condition should be:
transform.position.z <= random
if from below then your condition should be:
transform.position.z >= random
Thanks so much! I do see now that finding an EXACT point was not the way to go.
Your answer
Follow this Question
Related Questions
GameObject wont stop rotating ? 1 Answer
How do I get a single object to move? 1 Answer
Animator Start and Stop Animations 0 Answers
Lock player position 1 Answer