May
07
2015

Setting up a schematic to handle the player’s destruction.

While the player is already destroyed in a nice explosion, we’ll need additional game logic when that happens. The player’s lives must be reduced – if he still has lives left, he’ll need to respawn, otherwise game over needs to be called.

We’ll handle this in another schematic that’ll be called by a tagged machine on the player, just like the Destroy schematic.

Player Destroyed: Schematic

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

space_shooter_08_players_destruction1

Change Variables

Add > Value > Variable > Change Variables

We’ll reduce the player’s live (global int variable lives) here. Click on Add Variable to add a variable change.

  • Change Type
    Select Variable.
  • Variable Key
    Set to lives.
  • Variable Origin
    Select Global.
  • Type
    Select Int.
  • Operator
    Select Sub.
  • Float Value
    Set to 1 (Value).

Wait

Add > Base > Wait

We’ll wait for 1 second here – this will give the Destroy schematic enough time to finish.

  • Time (s)
    Set to 1.

Check Variables

Add > Value > Variable > Check Variables

Now, we’ll check if the player has used up all lives. Click on Add Variable to add a variable condition.

  • Condition Type
    Select Variable.
  • Variable Key
    Set to lives.
  • Variable Origin
    Select Global.
  • Is Valid
    Enable this setting.
  • Type
    Select Int.
  • Check Type
    Select Is Less Equal.
  • Float Value
    Set to 0 (Value).

Next, we’ll handle the game over case, i.e. the player used all lives.

Activate Object

Add > Game Object > Game Object > Activate Object

We’ll deactivate the player’s game object.

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

  • Set Active
    Disable this setting.
  • Object
    Select Machine Object.

Show Dialogue

Add > UI > Dialogue > Show Dialogue

This node will display a dialogue using a GUI box. We’ll display the game over message as a choice dialogue.

  • Dialogue Type
    Select Choice.
  • GUI Box
    Select Game Over.
  • Message (English)
    Set to:
    Game Over

Click on Add Choice to add a choice. We’ll display a single choice for the player to restart the game.

  • Choice Text (English)
    Set to:
    Restart

Change Variables

Add > Value > Variable > Change Variables

We’ll reset the score to 0 and the lives to 3. Click on Add Variable to add a variable change.

This node is connected to the Choice 0 slot of the Show Dialogue node.

  • Change Type
    Select Variable.
  • Variable Key
    Set to score.
  • Variable Origin
    Select Global.
  • Type
    Select Int.
  • Operator
    Select Set.
  • Float Value
    Set to 0 (Value).

Copy the variable change and change the following settings.

  • Variable Key
    Set to lives.
  • Float Value
    Set to 3 (Value).

Load Scene

Add > Game > Scene > Load Scene

This node will load a scene. We’ll use it to reload the current scene.

  • Reload Scene
    Enable this setting.
  • Load Type
    Select Load Level.
  • Position Type
    Select None.
    Since we already have the player in our scene, we don’t need Makinom to spawn the game object.

The default settings for the screen fade out and fade in will be enough for our little game.

Next, we’ll handle the respawn case, i.e. the player still has some lives left.

Activate Object

Add > Game Object > Game Object > Activate Object

We’ll deactivate the player’s game object.

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

  • Set Active
    Disable this setting.
  • Object
    Select Machine Object.

Wait

Add > Base > Wait

We’ll wait for 1 second before respawning.

  • Time (s)
    Set to 1.

Change Position

Add > Movement > Movement > Change Position

This node will set a game object’s position (or move it there over time). We’ll place the player back at the starting position.

Moving Object

  • Object
    Select Machine Object.
  • Movement Component
    Select Transform.

Target Position

  • To Object
    Disable this setting.
  • Vector3 Type
    Select Value.
  • Value
    Set to X=0, Y=0, Z=0.

Activate Object

Add > Game Object > Game Object > Activate Object

Now, we’ll activate the player’s game object again.

  • Set Active
    Enable this setting.
  • Object
    Select Machine Object.

Change Variables

Add > Value > Variable > Change Variables

We’ll set the bool object variable invincible to make the player invincible after respawn. Click on Add Variable to add a variable change.

  • Change Type
    Select Variable.
  • Variable Key
    Set to invincible.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.
  • Type
    Select Bool.
  • Bool Value
    Enable this setting.

Object Blink Visible

Add > Game Object > Renderer > Object Blink Visible

This node will blink a game object’s visibility, i.e. it will enable/disable all renderers and projectors. We’ll blink the player’s game object 6 times (i.e. 3x invisible-visible, one blink is changing from visible to invisible or invisible to visible).

  • Start Visible
    Enable this setting.
    The blinking starts in the visible state.
  • Object
    Select Machine Object.
  • Wait
    Enable this setting.
  • Blink Count
    Set to 6 (Value).
  • Visible Time (s)
    Set to 0.25 (Value).
  • Invisible Time (s)
    Set to 0.25 (Value).

Change Variables

Add > Value > Variable > Change Variables

We’ll disable invincible after blinking the player’s game object. Click on Add Variable to add a variable change.

  • Change Type
    Select Variable.
  • Variable Key
    Set to invincible.
  • Variable Origin
    Select Object.
  • Object
    Select Machine Object.
  • Type
    Select Bool.
  • Bool Value
    Disable this setting.

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

Player Destroyed: Tagged Machine

Now we’ll add the schematic with a tagged machine to the player’s game object. The tagged machine will be started by the same tag (destroy) as the already added machine, so it will be triggered by the Hit schematic as well.

Since the Destroy schematic will disable the game object, we’ll need to make sure that the PlayerDestroyed schematic is started before that. For this, we’ll need to place the new tagged machine above the Destroy tagged machine.

Select the Player game object in the scene and scroll down in the inspector to the already added tagged machine (using the Destroy schematic). Instead of adding a new tagged machine from scratch, we’ll just copy the one we already have and change the schematic. Right-click on the tagged machine’s name and select Copy Component in the context menu. Right-click on the name again and select Paste Component As New. Now the Destroy tagged machine is added twice.

Change the following settings on the first (i.e. upper) tagged machine.

Machine Execution Settings

  • Schematic Asset
    Select PlayerDestroyed.

And that’s it – don’t forget to save the scene and apply the changes to the player’s prefab.

Testing

Click on Play to test the game. Now, the player will lose lives when destroyed. When the last live was lost, the game over dialogue will be displayed – reloading the scene when accepted.

space_shooter_08_players_destruction2

The next lesson will handle the enemy ship mechanics.