# Random Animal Stampeed

#### <span class="step-index_3pnc7n2S">1.</span> Create a spawn manager

- <span data-offset-key="2je8v-0-0"><span data-text="true">In the Hierarchy, create an </span></span><span data-offset-key="2je8v-0-1" style="font-weight: bold;"><span data-text="true">Empty object</span></span><span data-offset-key="2je8v-0-2"><span data-text="true"> called “</span></span><span data-offset-key="2je8v-0-3" style="text-decoration: underline;"><span data-text="true">SpawnManager</span></span><span data-offset-key="2je8v-0-4"><span data-text="true">”</span></span>
- <span data-offset-key="78ksq-0-0"><span data-text="true">Create a new script called “</span></span><span data-offset-key="78ksq-0-1" style="text-decoration: underline;"><span data-text="true">SpawnManager</span></span><span data-offset-key="78ksq-0-2"><span data-text="true">”, attach it to the </span></span><span data-offset-key="78ksq-0-3" style="font-weight: bold;"><span data-text="true">Spawn Manager</span></span><span data-offset-key="78ksq-0-4"><span data-text="true">, and open it</span></span>
- <span data-offset-key="f1q8c-0-0"><span data-text="true">Declare new </span></span><span data-offset-key="f1q8c-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">public GameObject\[ \] animalPrefabs;</span></span>
- <span data-offset-key="fspas-0-0"><span data-text="true">In the Inspector, change the </span></span><span data-offset-key="fspas-0-1" style="font-weight: bold;"><span data-text="true">Array size</span></span><span data-offset-key="fspas-0-2"><span data-text="true"> to match your animal count, then </span></span><span data-offset-key="fspas-0-3" style="font-weight: bold;"><span data-text="true">assign</span></span><span data-offset-key="fspas-0-4"><span data-text="true"> your animals by </span></span><span data-offset-key="fspas-0-5" style="font-weight: bold;"><span data-text="true">dragging </span></span><span data-offset-key="fspas-0-6"><span data-text="true">them from the Project window into the empty slots </span></span><span data-offset-key="fspas-0-7" style="font-weight: bold;"><span data-text="true">Note: </span></span><span data-offset-key="fspas-0-8"><span data-text="true">Make sure you drag them from the </span></span><span data-offset-key="fspas-0-9" style="font-weight: bold;"><span data-text="true">Project </span></span><span data-offset-key="fspas-0-10"><span data-text="true">window; not the Hierarchy! If you're going to spawn objects, you need to make sure you're using Prefabs, which are stored in the Project window.</span></span>

#### <span class="step-index_3pnc7n2S">2.</span> Spawn an animal if S is pressed

- <span data-offset-key="d2kl5-0-0"><span data-text="true">In </span></span><span data-offset-key="d2kl5-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">Update()</span></span><span data-offset-key="d2kl5-0-2"><span data-text="true">, write an if-then statement to </span></span><span data-offset-key="d2kl5-0-3" style="font-weight: bold;"><span data-text="true">instantiate</span></span><span data-offset-key="d2kl5-0-4"><span data-text="true"> a new animal prefab at the top of the screen if </span></span><span data-offset-key="d2kl5-0-5" style="font-weight: bold;"><span data-text="true">S </span></span><span data-offset-key="d2kl5-0-6"><span data-text="true">is pressed</span></span>
- <span data-offset-key="c9aur-0-0"><span data-text="true">Declare a new </span></span><span data-offset-key="c9aur-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">public int animalIndex</span></span><span data-offset-key="c9aur-0-2"><span data-text="true"> and incorporate it in the </span></span><span data-offset-key="c9aur-0-3" style="font-weight: bold;"><span data-text="true">Instantiate </span></span><span data-offset-key="c9aur-0-4"><span data-text="true">call, then test editing the value in the Inspector</span></span>

#### <span class="step-index_3pnc7n2S">3.</span> Spawn random animals from an array

- <span data-offset-key="9javl-0-0"><span data-text="true">In the if-statement checking if S is pressed, generate a random </span></span><span data-offset-key="9javl-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">int animalIndex </span></span><span data-offset-key="9javl-0-2"><span data-text="true">between 0 and the length of the array</span></span>
- <span data-offset-key="90ftq-0-0"><span data-text="true">Remove the global </span></span><span data-offset-key="90ftq-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">animalIndex</span></span><span data-offset-key="90ftq-0-2"><span data-text="true"> variable, since it is only needed locally in the </span></span><span data-offset-key="90ftq-0-3" style="font-weight: bold;"><span data-text="true">if-statement</span></span>


#### <span class="step-index_3pnc7n2S">4.</span> Randomize the spawn location

- <span data-offset-key="er8h8-0-0" style="font-weight: bold;"><span data-text="true">Replace</span></span><span data-offset-key="er8h8-0-1"><span data-text="true"> the X value for the Vector3 with </span></span><span data-offset-key="er8h8-0-2" style="font-weight: bold; font-style: italic;"><span data-text="true">Random.Range(-20, 20)</span></span><span data-offset-key="er8h8-0-3"><span data-text="true">, then test</span></span>
- <span data-offset-key="d3ca9-0-0"><span data-text="true">Within the </span></span><span data-offset-key="d3ca9-0-1" style="font-weight: bold;"><span data-text="true">if-statement</span></span><span data-offset-key="d3ca9-0-2"><span data-text="true">, make a new local </span></span><span data-offset-key="d3ca9-0-3" style="font-weight: bold; font-style: italic;"><span data-text="true">Vector3 spawnPos</span></span><span data-offset-key="d3ca9-0-4"><span data-text="true"> variable </span></span>
- <span data-offset-key="c8ueq-0-0"><span data-text="true">At the top of the class, create </span></span><span data-offset-key="c8ueq-0-1" style="font-weight: bold; font-style: italic;"><span data-text="true">private float</span></span><span data-offset-key="c8ueq-0-2"><span data-text="true"> variables for </span></span><span data-offset-key="c8ueq-0-3" style="font-weight: bold; font-style: italic;"><span data-text="true">spawnRangeX</span></span><span data-offset-key="c8ueq-0-4"><span data-text="true"> and </span></span><span data-offset-key="c8ueq-0-5" style="font-weight: bold; font-style: italic;"><span data-text="true">spawnPosZ</span></span>

<span class="step-index_3pnc7n2S">5.</span> Change the perspective of the camera

- <span data-offset-key="98crv-0-0"><span data-text="true">Toggle between </span></span><span data-offset-key="98crv-0-1" style="font-weight: bold;"><span data-text="true">Perspective</span></span><span data-offset-key="98crv-0-2"><span data-text="true"> and </span></span><span data-offset-key="98crv-0-3" style="font-weight: bold;"><span data-text="true">Isometric</span></span><span data-offset-key="98crv-0-4"><span data-text="true"> view in the Scene view to appreciate the difference</span></span>
- <span data-offset-key="1nd15-0-0"><span data-text="true">Select the </span></span><span data-offset-key="1nd15-0-1" style="font-weight: bold;"><span data-text="true">camera</span></span><span data-offset-key="1nd15-0-2"><span data-text="true"> and change the </span></span><span data-offset-key="1nd15-0-3" style="font-weight: bold;"><span data-text="true">Projection</span></span><span data-offset-key="1nd15-0-4"><span data-text="true"> from “Perspective” to “Orthographic”</span></span>

<span class="step-index_3pnc7n2S">6.</span> Lesson Recap

<div class="" data-block="true" data-editor="editorBody_5" data-offset-key="2snu3-0-0" id="bkmrk-new-functionality"><div class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr" data-offset-key="2snu3-0-0"><span data-offset-key="2snu3-0-0"><span data-text="true">New Functionality</span></span></div></div>- <span data-offset-key="94l2b-0-0"><span data-text="true">The player can press the S to spawn an animal</span></span>
- <span data-offset-key="20q6d-0-0"><span data-text="true">Animal selection and spawn location are randomized</span></span>
- <span data-offset-key="8gkui-0-0"><span data-text="true">Camera projection (perspective/orthographic) selected</span></span><span data-offset-key="2ce1r-0-0"><span data-text="true">  
    </span></span>


<span data-offset-key="2ce1r-0-0"><span data-text="true">New Concepts &amp; Skills</span></span>

- - <span data-offset-key="5kv4h-0-0"><span data-text="true">Spawn Manager</span></span>
    - <span data-offset-key="f90v9-0-0"><span data-text="true">Arrays</span></span>
    - <span data-offset-key="bcthe-0-0"><span data-text="true">Keycodes</span></span>
    - <span data-offset-key="4jrs2-0-0"><span data-text="true">Random generation</span></span>
    - <span data-offset-key="e2mto-0-0"><span data-text="true">Local vs Global variables</span></span>
    - <span data-offset-key="e2mto-0-0"><span data-text="true">Perspective</span></span><span data-offset-key="eeh84-0-0"><span data-text="true"> vs Isometric projections</span></span>

<span data-offset-key="9313r-0-0"><span data-text="true">Next Lesson</span></span>

- <span data-offset-key="ki0o-0-0"><span data-text="true">Using collisions to feed our animals!</span></span>