using UnityEngine; namespace OnlyScove.Scripts { /// /// A version of PlayerStateMachine that simulates constant forward or backward input. /// public class AutoPlayerStateMachine : PlayerStateMachine { [Header("Auto Pilot Settings")] public bool alwaysMoveForward = true; public bool alwaysRun = true; public bool isRed = false; // New property to differentiate movement direction private class FakeInputReader : InputReader { public Vector2 ForcedMove { get; set; } public bool ForcedSprint { get; set; } public override Vector2 MoveInput => ForcedMove; public override bool IsSprintHeld => ForcedSprint; } private FakeInputReader fakeInput; public override InputReader Input => fakeInput; protected override void Awake() { fakeInput = gameObject.AddComponent(); base.Awake(); } protected override void Update() { if (fakeInput != null) { // Logic updated: isRed moves backward (Vector2.down), others move forward (Vector2.up) fakeInput.ForcedMove = (isRed) ? (alwaysMoveForward ? Vector2.down : Vector2.zero) : (alwaysMoveForward ? Vector2.up : Vector2.zero); fakeInput.ForcedSprint = alwaysRun; } base.Update(); } } }