- Home /
Spawn object at random points within camera view
I'm looking to spawn objects at different points around the scene within the camera view. I think I have the general idea of it, but my execution is off, I have this so far:
public GameObject ball;
void spawnRandom()
{
Vector3 p = camera.ViewportToWorldPoint(new Vector3(Random.Range (0,0),Random.Range (1,1), camera.nearClipPlane));
Instantiate(ball, p, Quaternion.identity);
}
Am i on the right path? Or am I way off? At the moment, it's creating a lot of balls at the location of the camera
When you call Random.Range(x,x) it cannot return anything but x.
Answer by kamuzai1226 · Jul 19, 2014 at 06:41 PM
What you want is this http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html is the one you want.
public void SpawnRandom()
{
//Vector3 screenPosition = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width/2, Screen.height/2, Camera.main.nearClipPlane+5)); //will get the middle of the screen
Vector3 screenPosition = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));
Instantiate(ball,screenPosition,Quaternion.identity);
}
You also want to use farClipPlane and then divide it by 2 if you are using an orthographic camera. This will put the GameObject in the center of the clipping planes.
You also want to use farClipPlane and then divide it by 2 if you are using an orthographic camera. This will put the GameObject in the center of the clipping planes.
I use farClipPlane/2 in order to get the center of the Clipping Planes. It i a lot easier to work with than nearClipPlane.
Also instantiating is not the best way to go about spawning in GameObjects. Instantiate and Destroy are not efficient as an ObjectPool.
Your answer
Follow this Question
Related Questions
Spawning prefab on x axis inside the camera 2 Answers
Spawning at a random position away from the player 1 Answer
Select from an array based on values 1 Answer
Call a function multiple times 2 Answers
Making a camera list 1 Answer