Objective: Give some enemies a shield which blocks one hit.
Take the Enemy prefab and drag it into the scene, and set position to (X 0, Y 0, Z 0). Copy the Player’s Shield and paste as child of the Enemy. Change shield position to (X 0, Y 0, Z 0) and set the shield’s scale to 1.0 for X, Y, Z. Make sure the shield is inactive. Apply overrides to the Enemy prefab.
Add private Transform _enemyShield = false to the Enemy script. Assign the Shield that is a child of the enemy using the C# code below, gameObject.transform.Find(“Shield”). The gameObject.transform.Find searches children of the transform. Do not use GameObject.Find, which searches all game objects.
When an enemy spawns it runs the Enemy script and assigns the _enemyID, which defines its behavior. In the script below, a random integer is generated from 0 to 3, thus 25% of enemies will have shields active and an _enemyID of 2.
On colliding with either the Player or a Laser, if the _enemyShieldOn is true the enemy avoids damage using the return command. Before executing the return command _enemyShieldOn is set to false and the animation for the shield is inactivated.
The enemies are now shielded and more dangerous.