====== UseParentSpace for Spawners using Relative Position and Scale ====== This is a follow-on from [[en:tutorials:objects:useparentspace|UseParentSpace for Relative Object Positioning and Scaling]]. In the same way that child Objects can use the ''UseParentSpace'' property to operate within a Parent's relative position and scale... spawners can benefit from the same functionality. {{page>snippets:init_new_project&nofooter&noeditbutton}} ===== Objects and Spawners ===== In general when specifying what object to spawn, the object is given co-ordinates in world space like: Position = (35, 100, 0.0) With relative positioning, the object that is spawned will be positioned relative to the Parent Object's Size (The Parent Object is one that has a spawner attached). That can be confusing. Let's view it as a tree: * Main Object * Spawner connected * Object to Spawn It is the Object to Spawn, that will use the ''UseParentSpace'' property. But before we get there, let's set up a spawner in the usual way using world coordinates. ===== Making it rain ===== Start by making a rain cloud that spawns raindrops. Here's a cloud for you to use: {{ tutorials:spawners:cloud.png?nolink |}} Define a ''Cloud'' object in config: [Cloud] Spawner = RainSpawner Pivot = center Graphic = @ Texture = cloud.png Position = (0.0, -200.0, -0.1) Then change the ''Object'' to ''Cloud'' in the create line in the code: orxObject_CreateFromConfig("Cloud"); This will create a cloud object a little up from the centre of the screen. We haven't provided a spawner yet so it doesn't do anything. So define both the spawner and object to spawn with: [RainSpawner] Object = RainDrop TotalObject = 0 ActiveObject = 1000 WaveSize = 5 WaveDelay = 0.016 ~ 0.03 ObjectSpeed = (0, 800) Rotation = 22.5 UseRelativeSpeed = true [RainDrop] Graphic = @ Texture = pixel Size = (1,20) ~ (1,40) Alpha = 0.3 ~ 0.8 Color = (255,255,255) Pivot = top AutoScroll = both DepthScale = true LifeTime = 1.0 Smoothing = true Position = (-50.0, 00.0, 0.0) ~ (90.0, 00.0, 0.5) In the spawner config above, we're making ''RainSpawner'' spawn ''RainDrop'' objects, lots of them, in a fast down direction, but rotating the spawner by 22 degrees (plus using relative speed) to get a nice down-left direction for the rain. For the ''RainDrop'' objects themselves, we vary their alpha transparency, stretched size and their starting position on screen between X = -50.0 to 90.0. There is no image for the raindrops, we're just using a stretched pixel. That will do nicely. {{ tutorials:spawners:raining.png?nolink |}} ===== Relative Spawner Positioning ===== The last step is to convert the positioning to be relative to the Cloud's size. This means changing the ''Position'' property of the ''RainDrop'' and setting ''UseParentSpace'' to position: [RainDrop] Graphic = @ Texture = pixel Scale = (1,20) ~ (1,40) Alpha = 0.3 ~ 0.8 Color = (255,255,255) Pivot = top AutoScroll = both DepthScale = true LifeTime = 1.0 Smoothing = true Rotation = 22.5 Position = (-0.3, 0.0, 0.0) ~ (0.45, 0.0, 0.5) UseParentSpace = position Because the pivot of the ''Cloud'' is centred, the coordinate range is (-0.5, -0.5) to (0.5, 0.5). I've adjusted the X positions to between -0.3 and 0.45 to bring the positions in a little to work nicer with the cloud itself. The result should be the same: {{ tutorials:spawners:raining.png?nolink |}} ==== Further information ==== - Ordered List Item[[en:tutorials:objects:useparentspace|UseParentSpace for Relative Object Positioning and Scaling]] - [[en:orx:config:settings_structure:orxobject|Object Configuration]]