Circle instantiate?

Hello. I want to make my game similar to this (27-37 seconds), the player will be going through a tunnel with obstacles all around it. I want the obstacles around the tunnel to be randomly generated, how would I instantiate objects around a circle and make sure that they are facing the right way (for example, if one obstacle shoots a burst of fire, how would I make it so the no matter where on the cylinder, the fire is always bursting towards the center)? Also, how can I connect these instantiated objects together so that they rotate (my plan is rather than having the player controlled object traveling through an entire modeled tunnel and looping around it, the player is going to stay in the same place, the tunnel is going to rotate)? Thanks

rotating all things is is easy, just put all object below a empty gameobject and rotate that. The parent of objects that are instantiated by script can de edited with transform.parent = newTransform.

the objects can be done in several ways for example create a vector3 path inside your tunnel and random a couple of points. then offset towards your mesh and instantiate. you can cast a ray towards you mesh and then you would also get a normal direction of a face and use that to calculate your direction…