This page details what needs to be scripted to make a working Player movement controller for this project.
Overview
The player movement controller Player Movement Controller - Dungeon Movement is the first and most important piece of custom scripting needed for the project. With good player movement in place a lot of other aspects of design can be prototyped and refined.
...
The player character is near the middle of the screen, the camera follows them.
The dungeon is presented from a top down 2D perspective and the floor is broken up into visually clear to see square spaces.
Each of these square spaces is measured in-engine at 1 unity unit squared.
The player character navigates by moving in 4 directions from one square to the next: They can move UP, DOWN, LEFT, RIGHT.
1 Player Made -made Input = 1 Unit of movement made
Movement is not continued if the input is held down.
If the player character encounters a collider in the projected direction they wish to move: No movement is made.
...
They are standing 1 unity unit or less next to it. (Visually the character is standing one square beside the object.
They are pressing down a movement direction button in the correct direction of the object. (They wont move due to the collision rules being abided.)
They have also pressed the “Action Button 1” input. (eg: Hitting spacebar.) at the same time.
When all three conditions are met then the player character will spawn an invisible trigger volume in with the space of the object for an amount of time.
...
That objects state machine will then take on the responsibilities for the rest of the interaction . Up right up until player control is returned to the player.
...
The following variables for the component script should be exposed in the unity Inspector window to allow some customization and design tuning.
...
Like Similar to as seen here for the sprite renderer componenetcomponent. Options Variables are available to the designer:
...
Variable Name | Variable type | Playmaker or Animator Integration? | Description | Default Variable Setting: |
---|---|---|---|---|
Movement UP | Keyboard Input | The input needed to move up. (+Y) | W | |
Movement DOWN | Keyboard Input | The input needed to move down. (-Y) | S | |
Movement LEFT | Keyboard Input | The input needed to move left. (-X) | A | |
Movement RIGHT | Keyboard Input | The input needed to move Right. (+X) | D | |
Action Button 1 | Keyboard Input | The input needed to count an action. | Spacebar | |
Movement Distance | Float | The distance in unity units the player moves per successful input | 1 | |
Movement Time | Float | The time in seconds it takes for the player character to physically move from the initial location to the destination location. Setting to -1 will equate to instant movement. | 0.1 | |
Next Movement Delay | Float | The time in seconds that the player has to wait until another movement input will register and send off checks. Setting to -1 will equate to no delay | 0.1 | |
Next Action Delay | Float | The time in seconds that the player has to wait until they can perform another action after completing one. Setting to -1 will equate to no delay | 0.1 | |
Playmaker Integrations: | ||||
On Beat Check | Bool Name | Playmaker global variable | The name of the playmaker global variable bool that it checks to see if the input was made “On Beat” The true / false state of this variable is determined external to this script. | On Beat? |
On Beat Move Success | Bool Name | Playmaker global variable | The name of the playmaker global variable bool this script sets to true if the “On Beat Check” comes back as true on a movement input. A playmaker state machine will check for the true change and then reset it back to false after an amount of time. | On Beat Move Success |
On Beat Interaction Success | Bool Name | Playmaker global variable | The name of the playmaker global variable bool this script sets to true if the “On Beat Check” comes back as true on a object interaction input. A playmaker state machine will check for the true change and then reset it back to false after an amount of time. | On Beat Interaction Success |
Movement Disabled | Bool Name | Playmaker global variable | The name of the playmaker global variable this script checks to see if it needs to disable movement. The script should be making this check quite often. | Move Disabled? |
Unity Animator Integrations: | ||||
Animator Component Location | Object Path | The path location of the object that has the character “animator” component attached to it. | (None) | |
Movement Animator Name | Trigger (Animator) Name | Animator | The name of the animator trigger variable it triggers when a successful movement is made. | Character Move |
On Beat Move Animator Name | Trigger (Animator) Name | Animator | The name of the animator trigger variable that it triggers when a movement is made “On Beat” | Character On Beat |
No Movement Animator Name | Trigger (Animator) Name | Animator | The name of the animator trigger variable that it triggers when an input resulted in no movement. | Character No Movement |
...