May
06
2015

Setting up the asteroids.

The game will have 3 different asteroids. We’ll need another schematic to randomly rotate the asteroids, the rest of the needed schematics is already set up.

Random Rotator: Schematic

This schematic will randomly rotate the asteroid’s game object by setting the rigidbody’s angular velocity. Open the Makinom editor, navigate to Schematics and create a new schematic. Change the following settings.

space_shooter_05_asteroids1

Settings

We’ll set up a local variable as Machine Start Variable 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 tumble.
  • Type
    Select Float.
  • Default Value
    Set to 5.

Vector3 Multiply

Add > Value > Vector > Vector3 Multiply

We’ll store the velocity into a local Vector3 variable, using a randomly generated Vector3 value and the local float variable tumble (local start variable of the machine component).

Variable Settings

  • Variable Key
    Set to velocity.
  • Variable Origin
    Select Local.
  • Operator
    Select Set.

Vector3 Value

  • Vector3 Type
    Select Random Inside Sphere.
    This will create a random Vector3 value with X, Y and Z being randomly between 0 and 1.

Multiply By

  • Multiply By
    Select Float Variable.
  • Variable Key
    Select tumble.
  • Variable Origin
    Select Local.

Change Fields

Add > Function > Change Fields

This node will change fields and properties of a component (or class) using reflection. Since there is no specific node to change the angular velocity of a rigidbody, we’ll use this node to set the value instead.

Object

  • Object
    Select Machine Object.

Field Settings

  • Class Name
    Set to Rigidbody.

Click on Add Field to add a field/property that will be changed on the defined component/class.

  • Field Name
    Set to angularVelocity.
  • Is Property
    Enable this setting.
    The rigidbody’s angular velocity is a property, not a field.
  • Field Type
    Select Vector3.
  • Vector3 Type
    Select Vector3 Variable.
  • Variable Key
    Set to velocity.
  • Variable Origin
    Select Local.

That’s it for the schematic – click on Save Schematic and save it as RandomRotator in Assets/Schematics/.

Setting up the Asteroids

The setup for all 3 asteroids is the same (except for minimal differences in the Object Variables). The following component setup can be repeated for all asteroid prefabs, or you can just copy the components and paste them on the other asteroids.

You can copy a component by right-clicking on the component’s name and selecting Copy Component in the context menu. To paste the component on a game object, right-click on any component’s name and select Paste Component As New in the context menu.

The asteroid prefabs (Asteroid 1Asteroid 2 and Asteroid 3) can be found at Assets/Tutorial Resources/.

Object Variables

First, we’ll set up the object variables of the asteroids. Add an object variable component to the prefabs (e.g. using the component menu: Makinom > Scenes > Object Variables). Change the following settings.

  • Local Variables
    Enable this setting.
    The asteroids can be spawned multiple times, so we don’t want them to share their variables.
  • Always Initialize
    Enable this setting.
    This makes sure that the variables will be initialized each time the game object is spawned/activated.

Click on Add Variable to add an object variable.

  • Variable Key
    Set to health.
    Select the Value string type.
  • Type
    Select Int.
  • Operator
    Select Set.
  • Float Value
    Asteroid 1: Set to 1 (Value).
    Asteroid 2: Set to 2 (Value).
    Asteroid 3: Set to 3 (Value).
    The asteroids will have different health values, i.e. asteroid 1 will need 1 hit to be destroyed, asteroid 3 will need 3 hits.

Copy the variable and change the following settings.

  • Variable Key
    Set to points.
  • Float Value
    Asteroid 1: Set to 50 (Value).
    Asteroid 2: Set to 75 (Value).
    Asteroid 3: Set to 100 (Value).
    The asteroids will add different points to the score.

That’s it for the object variables.

Mover: Auto Machine

Next, we’ll add the Mover schematic using an auto machine component. The schematic will move a game object by setting the rigidbody’s velocity.

Add the component to the asteroid prefabs (e.g. using the component menu: Makinom > Machines > Auto Machine). Change the following settings.

Start Settings

  • Enable
    Enable this setting.

Machine Execution Settings

  • Asset Type
    Select Schematic.
  • Schematic Asset
    Select Mover.
  • Execution Type
    Select Single.
  • Update Type
    Select Fixed Update.

Local Start Variables

The Machine Start Variable we’ve set up in the schematic is automatically added here, so all we need to do is adjust it to our needs. Make sure the variable is enabled.

  • speed
    Set to -5.

Random Rotator: Auto Machine

Now, we’ll add the RandomRotator schematic using an auto machine component. The schematic will randomly rotate a game object by setting the rigidbody’s angular velocity.

Add the component to the asteroid prefabs (e.g. using the component menu: Makinom > Machines > Auto Machine). Change the following settings.

Start Settings

  • Enable
    Enable this setting.

Machine Execution Settings

  • Asset Type
    Select Schematic.
  • Schematic Asset
    Select RandomRotator.
  • Execution Type
    Select Single.
  • Update Type
    Select Fixed Update.

Local Start Variables

The Machine Start Variable we’ve set up in the schematic is automatically added here, the default value is all we need. Make sure the variable is enabled.

Destroy: Tagged Machine

The Destroy schematic handles the destruction of a game object, spawning a particle effect prefab and playing and audio clip. The tagged machine component we’ll use for that will be started by the Hit schematic using the tag destroy.

Add the component to the asteroid prefabs (e.g. using the component menu: Makinom > Machines > Tagged Machine). Change the following settings.

Start Settings

Click on Add Starting Tag to add a tag that can start this machine.

  • Starting Tag
    Set to destroy.

Machine Execution Settings

  • Asset Type
    Select Schematics.
  • Schematics Asset
    Select Destroy.
  • Execution Type
    Select Single.
  • Update Type
    Select Update.
  • Stop On Destroy
    Disable this setting.
    This will allow the machine to continue when the game object was destroyed or disabled.

We don’t need to use resource overrides, since we used the asteroid’s particle effect and audio clip in the schematic.

Hit: Trigger Machine

The Hit schematic reduces the health of game objects that are hit by the asteroids. If the health drops to 0, it will start the destroy tagged machine.

The hit mechanic will use a trigger, add a trigger component to the asteroid prefabs (e.g. using the component menu: Makinom > Machines > Trigger Machine).

Start Settings

  • Trigger Enter
    Enable this setting.

Unlike the Bolt setup, we don’t need to use Start By Other or Limit Layers, because the asteroids will only need to hit the player’s game object.

Machine Execution Settings

  • Asset Type
    Select Schematics.
  • Schematics Asset
    Select Hit.
  • Execution Type
    Select Single.
  • Update Type
    Select Update.

Local Start Variables

The Machine Start Variable we’ve set up in the schematic is automatically added here, the default value is all we need. Make sure the variable is enabled.

And that’s it for now. Since we’ve added the components to the prefabs directly, we don’t need to apply the changes.

The next tutorial will handle the game controller, which will spawn the enemy waves (only asteroids for now).