- Home /
How do i use StateMachine logic with my code ?
I took the two scripts of the state machine from here:
And the Main.cs script for the example:
And then i'm trying to use it with my code. In my script PlayerController.cs i added at the top the states i think i should have:
using UnityEngine;
using System.Collections;
using MonsterLove.StateMachine;
public class PlayerController : MonoBehaviour {
//Declare which states we'd like use
public enum States
{
Init,
Move,
Walk,
Idle,
Look
}
Move is to move the player and Walk is to move the player with the walk animation but maybe i should use here only Move and in another script to decide if to use the walk animation or not ?
Then i added some variables:
public int moveSpeed = 3;
public int walkSpeed = 3;
private Animator _animator;
private StateMachine<States> fsm;
Then added Awake function:
private void Awake()
{
_animator = GetComponent<Animator>();
//Initialize State Machine Engine
fsm = StateMachine<States>.Initialize(this, States.Init);
}
Then added State function but maybe i'm wrong here too. I should add a method for each state ? For example for Walk so to do
void Walk()
{
}
I messed it up. From my other question answer i quote:
PlayerController, which controls the movement and states of the player
MouseTargetController, which feeds the mouse target info into the player controller
AnimationController, which reads the player controllers state and updates the animation based off that
so i want to have this 3 scripts but not sure how to use the State Machine with them and how to integrate between the 3 scripts and the state machine.
I didn't create the two other scripts yet.
This is my previous question and answer i got:
The state machine and making 3 scripts and then integrate between all of them seems to be very hard.
Answer by phxvyper · Oct 24, 2016 at 10:16 PM
The state machine you're using is not a true state machine. A true state machine has predefined rules, and you may not transition from one state to another without a preexisting rule for that transition.
I suggest that you follow the answer for state machines in C# found on Stackoverflow, here
It's what I've used for state machines in the past, and it has the exact behaviour that you'd expect out of a state machine.
All you will need is the state machine Process class, an enum for your States, and an enum for the transitional Commands. Your game script will check for certain conditions and send commands to the state machine based off of those conditions.
Your answer
Follow this Question
Related Questions
State Machine Question 1 Answer
What this part of code does ? 1 Answer
How do i add a trigger to gameobject ? 1 Answer
Multiple Cars not working 1 Answer