Hey I’m kinda stuck on wrapping my head around the idea of spawning enemies for a top down space shooter. In most cases would people spawn them outside the camera view or would they spawn them on the very edge of the view?
Either way, how would you do this? If anyone has done it before would be great help. Also would it be easier to make the player ship and the camera actually move, or make them in a static position with scrolling assets to make a fake moving feel?
Either way, if anyone knows how to spawn the enemies just outside the camera view to get them to move in and make it look smooth, that would be great.
You can use Viewport coordinates to spawn just beyond the edges. Viewport coordinates map to the screen with (0,0) in the lower left and (1,1) in the upper right. Any values beyond this frame will be outside he view. For example a coordinate of (-.15, .5) will spawn just of the left edge and centered half way up the screen. Likewise a value of (1.15, .25) will be a quarter of the way up on the right edge of the screen. To convert these to usable world coordinates use Camera.ViewportToWorldPoint() Before you can use this function, you need to decide (or randomly generate) a value for how far away from the screen to generate the point and assign that value to ‘z’.
var v3Pos = Vector3(0.5, 1.1, 10.0);
v3Pos = Camera.main.ViewportToWorldPoint(v3Pos);
The resulting position will be just above the center of the screen 10 units from the camera. Note the calculation is for that specific position. The objects you spawn will have some width, so you will need to compensate. In other words if you were to spawn at (0.0, 0.5, 10), half of your object would be showing since the position would most likely be the center of the object.