Use schematic target highlights to animate turning to a target.
Target highlights are used to mark a target during target selection. Usually this spawns a prefab (e.g. a cursor) on them or blink the target’s game object or HUD in a color.
However, you can also use a schematic when highlighting (and stop highlighting) a target. In this tutorial, we’ll set up a simple schematic that’ll slowly turn the user toward the target. We’ll set up 2 schematics, one for highlighting (turning to the target) and one for stopping the highlight (resetting the rotation).
This tutorial is based on the 3D RPG Quickstart tutorial series, but you can use this for any kind of project.
You can download the finished schematics here:
Highlight Schematic #
We’ll start with highlighting – target highlight schematics will have the target(s) as Machine Object and the user (selecting targets) as Starting Object.
Open the Makinom editor and navigate to Schematics.
Change Variables #
Add Node > Value > Variable > Change Variables
We’ll first store the current rotation as an object variable on the user (Starting Object).
Click on Add Variable.
- Change Type
Select Variable. - Variable Key
Set to: resetRotation - Variable Origin
Select Object. - Object (Variable Origin)
Select Starting Object. - Type
Select Vector 3. - Vector3 Type
Select Game Object > Game Object. - Object (Vector3 Type)
Select Starting Object. - Value Origin (Vector3 Type)
Select Rotation.
Is Object #
Add Node > Game Object > Game Object > Is Object
This node is used to check if a game object is the same as another game object.
We’ll check if target and user are the same, in which case we don’t turn.
- Object (Object 1)
Select Machine Object. - Object (Object 2)
Select Starting Object.
Rotate To #
Add Node > Movement > Rotation > Rotate To
And finally, we’ll rotate the user (Starting Object) to the target(s) (Machine Object).
This node is connected to the Failed slot of the Is Object node (i.e. user and target are not the same).
- Object (Rotating Object)
Select Starting Object. - Rotate Component
Select Transform.
Using transform for rotation is always a safe bet – depending on your combatant prefab’s setup you can also use other methods, e.g. Rigidbody to involve physics. - Lock Rotation
Enable X and Z.
We’ll only rotate on the Y axis (for 3D games). - Rotation Target
Select Game Object. - Object (Rotation Target)
Select Machine Object. - Fade Rotation
Enable this setting.
The rotation will change over time instead of setting it immediately. - Time
Select Value > Value.
Set the value to 0.5 (or any other time you want).
And that’s it for the schematic. Click on Save Schematic to save it, e.g. as HighlightRotateToTarget.
Stop Highlight Schematic #
Next, we’ll set up the schematic used when stopping the target highlight – we’ll reset the user’s rotation back to the stored rotation (no fade this time).
Start working on a new schematic.
Variable Exists #
Add Node > Value > Variable > Variable Exists
We’ll first check if the resetRotation variable exists on the user (Starting Object).
- Variable Key
Set to: resetRotation - Variable Origin
Select Object. - Object (Variable Origin)
Select Starting Object. - Type
Select Vector 3.
Change Rotation #
Add Node > Movement > Rotation > Change Rotation
We reset the user’s rotation using the resetRotation variable.
This node is connected to the Success slot of the Variable Exists node.
- Object (Rotating Object)
Select Starting Object. - Rotate Component
Select Transform. - Lock Rotation
Enable X and Z. - Set Rotation
Enable this setting.
We’ll directly set the rotation using the provided value.
Otherwise, the rotation will be added to the current rotation (e.g. rotate by 90°). - Vector3 Type
Select Vector 3 Variable. - Variable Key
Set to: resetRotation - Variable Origin
Select Object. - Object (Variable Origin)
Select Starting Object.
And that’s it for the schematic. Click on Save Schematic to save it, e.g. as HighlightStopResetRotation.
Combatant General Settings #
Since we’re using object variables on the combatants to store the reset rotation, we need to make sure our combatants actually use object variables.
Navigate to Combatants > Combatants > General Settings and change the following settings.
Base Settings > Object Variable Settings #
- Use Object Variables
Enable this setting. - Local Variables
Enable this setting.
Target Settings #
All that’s left to do is use the schematics for our target highlights.
Navigate to Battles > Target Settings and change the following settings.
Target Selection > Target Menu #
First, we make sure our target selection doesn’t already rotate to the target.
While it’s convenient, it’ll immediately set the rotation, while our schematic rotates over time (or also allows you to play animations, etc.).
- Rotate To Targte
Disable this setting.
Target Selection > Target Highlight #
We’ll add a new highlight that uses our schematic.
Click on Add Highlight.
- Highlight Type
Select Schematic. - Highlight Schematic
Select the HighlightRotateToTarget schematic. - Stop Highlight Schematic
Select the HighlightStopResetRotation schematic.
Save Changes #
And that’s it!
Don’t forget to save your changes by clicking on Save Settings at the bottom of the editor.
Testing #
Hit play and test the new target selection in battle.
The player combatants rotate toward the selected target and reset the rotation afterwards.
Tip! Do More #
This is only a small demonstration of what you can do.
Since you have access to user and target (and also the used ability/item the target is selected for), you can do whatever you want with it.
E.g. play an animation, show a dialogue (e.g. auto close for a small speech bubble), change the camera, etc.
Tip! Limitations #
The highlight schematics are used immediately and the system will not wait for them.
E.g. quickly changing target selections will start highlight and stop highlight schematics immediately after each other, so stop highlight might be used while highlight is still going on.
However, it’s guaranteed that the previous target’s stop highlight schematic is used before the next target’s highlight schematic.