50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using UnityEngine;
|
|
|
|
namespace OnlyScove.Scripts
|
|
{
|
|
/// <summary>
|
|
/// A version of PlayerStateMachine that simulates constant forward or backward input.
|
|
/// </summary>
|
|
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<FakeInputReader>();
|
|
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();
|
|
}
|
|
}
|
|
}
|