- Home /
Drop item from airplane
Hello everyone. I am making a 3D shooter and have planes flying from the top of the sreen to the bottom, dropping a powerup somewhere along the z axis. The problem I'm having is that the powerup (crate) is being spawned before the plane flies across the screen so it looks like the powerup is appearing out of nowhere. How can I get it to spawn correctly?
function LevelEnd(){
if(level == 1){
CoastguardFire.canShoot = false;
while(totalEnemies != level + 2){
posX = Random.Range(-4.232903,4.232903);
Instantiate(enemies[0],Vector3(posX, 0.1, 2.626708),transform.rotation);
totalEnemies += 1;
}
while(totalPlanes != level){
posY = Random.Range(2.787038, 5.503512);
posX = Random.Range(-3.116441,1.936659);
posZ = Random.Range(2.626708,-3);
var crateType = Random.Range(0,2);
Instantiate(planes[0],Vector3(posX, posY, 2.626708),Quaternion.Euler(Vector3(0,180,0)));
totalPlanes += 1;
Instantiate(crates[crateType],Vector3(posX,posY,posZ),transform.rotation);
}
}
}
Add a yeild and have make it however long it takes. Explain your game more please.
Answer by Seth-Bergman · Apr 30, 2012 at 03:06 AM
you're instantiating your crate and your plane at the same time, at different locations. As suggested above, you could use a yield WaitForSeconds with a random number from the minimum acceptable drop time to the max of how long the plane takes to cross the screen, then use:
var clone : RigidBody;
clone=Instantiate(planes[0],Vector3(posX,posY,2.626708),Quaternion.Euler(Vector3(0,180,0)));
yield WaitForSeconds goes here;
Instantiate(crates[crateType],clone.transform.position,transform.rotation);
something like this should do it I think
seth come to my profile and see if you can help me real quick on my force problem :)
Your answer
Follow this Question
Related Questions
Object Spawning Randomly 0 Answers
Why do objects keep spawning on top of one another? 0 Answers
Random select from array and spawn 1 Answer
Creating a light in game C# 1 Answer