Setting up enemy game mechanics.

In this tutorial we’ll create schematics for the enemy’s movement, attack and death.

Enemy Movement: Schematic

First, we’ll set up the enemy’s movement – the enemy will be moved using NavMesh.

Open the Makinom editor, navigate to Schematics and create a new schematic. Change the following settings.

survival_shooter_04_enemy_mechanics1

Check Variables

Add > Value > Variable > Check Variables

This node is used to check for variable conditions. We’ll use it to check the health of the enemy and player.

Click on Add Variable to add a variable condition.

  • Condition Type
    Select Variable.
  • Variable Key
    Set to health.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.
  • Is Valid
    Enable this setting.
  • Exists
    Enable this setting.
  • Type
    Select Int.
  • Check Type
    Select Is Greater.
  • Check Value
    Set to 0 (Value).

Copy the variable condition and change the following settings.

  • Object
    Select Player.

NavMesh Destination

Add > Movement > NavMesh > NavMesh Destination

This node is used to set the destination of a NavMesh agent. We’ll use it to move the enemy to the player’s position.

This node is connected to the Success slot of the Check Variables node.

Moving Object

  • Object
    Select Machine Object.

Target Position

  • To Object
    Enable this setting.
  • Object
    Select Player.

Enable Component

Add > Game Object > Component > Enable Component

This node is used to enable/disable components. We’ll use it to disable the NavMesh agent component.

This node is connected to the Failed slot of the Check Variables node.

  • Component Name
    Set to NavMeshAgent.
  • Enable/Disable
    Disable this setting.
  • Object
    Select Machine Object.

And that’s it for the schematic – click on Save Schematic and save it as EnemyMovement in Assets/Schematics/.

Enemy Attack: Schematic

Next, we’ll create the schematic handling the enemy’s attack. The enemy will attack the player while being within the enemy’s trigger.

Create a new schematic and change the following settings.

survival_shooter_04_enemy_mechanics2

Settings

We’ll set up local variables as Machine Start Variables for easy setup in the machine component at a later time. When using the schematic in a machine component, the defined start variables will be added automatically, using their default values.

Machine Start Variables

Click on Add Start Variable to add a local start variable that will be exposed to the machine component’s inspector.

  • Variable Key
    Set to damage.
  • Type
    Select Int.
  • Default Value
    Set to 10.

Again, click on Add Start Variable to add another local start variable.

  • Variable Key
    Set to attackTimeout.
  • Type
    Select Float.
  • Default Value
    Set to 0.5.

Start Tagged Machine

Add > Machine > Start Tagged Machine

This node is used to start a tagged machine. We’ll use it to start a tagged machine with the tag damage, which will handle reducing the target’s health. The actual damage is stored in the local float variable damage (local start variable of the machine).

  • Share Local Variables
    Enable this setting.
  • Wait
    Disable this setting.

Machine Object

  • Object
    Select Starting Object.

Starting Object

  • Object
    Select Machine Object.

Tag Settings

Click on Add Tag to add a starting tag.

  • Tag
    Set to damage.

Wait

Add > Base > Wait

This node is used to wait for some time. We’ll use it to wait for the enemy’s attack timeout (local start variable).

  • Time (s)
    Select Float Variable.
  • Variable Key
    Set to attackTimeout.
  • Variable Origin
    Select Local.

And that’s it for the schematic – click on Save Schematic and save it as EnemyAttack in Assets/Schematics/.

Enemy Death: Schematic

When an enemy dies, we’ll play an audio clip, disable the collider, play a death animation and move the enemy’s game object down into the floor.

Create a new schematic and change the following settings.

survival_shooter_04_enemy_mechanics3

Settings

Since we’ll use this schematic for different enemies, we want to play different audio clips for them. Adding an audio clip as a resource will allow us to override it in the machine’s settings.

Audio Clips

Click on Add Audio Clip Resource to add an audio clip resource.

  • Name
    Set to Death.

Play Sound

Add > Animation + Audio > Audio > Play Sound

This node is used to play audio clips. We’ll use it to play the death audio clip resource.

Play On

  • Object
    Select Machine Object.

Audio Settings

  • Audio Clip
    Select Death.
  • Play One Shot
    Enable this setting.
  • Volume
    Set to 1.

Emit Particles

Add > Game Object > Component > Emit Particles

This node is used to start/stop emitting particles. We’ll use it to start a death particle effect.

  • Emit
    Enable this setting.
  • Stop Before Start
    Enable this setting.
  • Object
    Select Machine Object.
  • Child Object
    Set to DeathParticles.

Enable Component

Add > Game Object > Component > Enable Component

We’ll use this node to disable the capsule collider.

  • Component Name
    Set to CapsuleCollider.
  • Enable/Disable
    Disable this setting.
  • Object
    Select Machine Object.

Play Mecanim Animation

Add > Animation + Audio > Mecanim > Play Mecanim Animation

This node is used to play an animation or set parameters of an animator. We’ll use it to play the death animation of the enemy by setting the Dead trigger parameter.

This node is connected to the Success slot of the Check Speed node.

  • Object
    Select Machine Object.
  • Play Mode
    Select None.
    We’ll play the animation by setting a parameter.

Click on Add Parameter to add an parameter that will be changed.

  • Parameter Name
    Set to Dead.
  • Parameter Type
    Select Trigger.

Change Variables

Add > Value > Variable > Change Variables

This node is used to change variables. We’ll use it to increase the score by the enemy’s points. The score is stored in the global int variable score, the points are stored in the enemy’s object int variable points.

Click on Add Variable to add a variable change.

  • Change Type
    Select Variable.
  • Variable Key
    Set to score.
  • Variable Origin
    Select Global.
  • Type
    Select Int.
  • Operator
    Select Add.
  • Float Value
    Select Int Variable.
  • Variable Key
    Set to points.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.

Wait

Add > Base > Wait

We’ll wait for a second to allow the enemy’s death animation to finish.

  • Time (s)
    Set to 1 (Value).

Move Into Direction

Add > Movement > Movement > Move Into Direction

This node is used to move a game object into a direction. We’ll use it to move the enemy into the floor.

Moving Object

  • Object
    Select Machine Object.
  • Move Component
    Select Transform.
    This makes sure we don’t use any physics for the movement.

Movement Settings

  • Time (s)
    Set to 2.
  • Wait
    Enable this setting.
  • Speed
    Set to 2.5.

Direction

  • Vector3 Type
    Select Direction.
  • Direction
    Select Down.

And that’s it for this schematic – click on Save Schematic and save it as EnemyDeath in Assets/Schematics/.

Take Damage: Schematic

Finally, we’ll set up the schematic that reduces the health and starts a tagged machine with the tag death in case the health is reduced to 0. This schematic will also be used by the player to take damage.

Create a new schematic and change the following settings.

survival_shooter_04_enemy_mechanics4

Settings

Since we’ll use this schematic for different enemies, we want to play different audio clips for them. Adding an audio clip as a resource will allow us to override it in the machine’s settings.

Audio Clips

Click on Add Audio Clip Resource to add an audio clip resource.

  • Name
    Set to Hurt.

Play Sound

Add > Animation + Audio > Audio > Play Sound

We’ll use it to play the hurt audio clip resource.

Play On

  • Object
    Select Machine Object.

Audio Settings

  • Audio Clip
    Select Hurt.
  • Play One Shot
    Enable this setting.
  • Volume
    Set to 1.

Change Variables

Add > Value > Variable > Change Variables

We’ll usethis node to reduce the health (object variable) by the damage, a local variable passed on by the schematic that started this schematic (tagged machine).

Click on Add Variable to add a variable change.

  • Change Type
    Select Variable.
  • Variable Key
    Set to health.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.
  • Type
    Select Int.
  • Operator
    Select Sub.
  • Float Value
    Select Int Variable.
  • Variable Key
    Set to damage.
  • Variable Origin
    Select Local.

Check Variables

Add > Value > Variable > Check Variables

We’ll use this node to check if the health reached 0.

Click on Add Variable to add a variable condition.

  • Condition Type
    Select Variable.
  • Variable Key
    Set to health.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.
  • Is Valid
    Enable this setting.
  • Exists
    Enable this setting.
  • Type
    Select Int.
  • Check Type
    Select Is Less Equal.
  • Check Value
    Set to 0 (Value).

Start Tagged Machine

Add > Machine > Start Tagged Machine

We’ll use this node to start the death tagged machine when the health is gone.

This node is connected to the Success slot of the Check Variables node.

  • Wait
    Disable this setting.

Machine Object

  • Object
    Select Machine Object.

Starting Object

  • Object
    Select Starting Object.

Tag Settings

Click on Add Tag to add a starting tag.

  • Tag
    Set to death.

And that’s it for this schematic – click on Save Schematic and save it as TakeDamage in Assets/Schematics/.

The next tutorial will handle setting up the enemies.