using UnityEngine; /// /// 模拟输入源(测试用),提供预设的输入序列 /// public class SimulatedInputSource : IInputSource { private readonly (float turn, float throttle)[] _inputSequence; private int _index; private Vector3 _lastAimDirection = Vector3.forward; private bool _shootTriggered; public SimulatedInputSource((float turn, float throttle)[] sequence) { _inputSequence = sequence; _index = 0; } public Vector3 GetPlanarInput() { if (_index >= _inputSequence.Length) { return Vector3.zero; } var (turn, throttle) = _inputSequence[_index]; return new Vector3(turn, 0f, throttle); } public bool ConsumeShootInput() { if (_shootTriggered) { _shootTriggered = false; return true; } return false; } public Vector3 GetAimDirection() { return _lastAimDirection; } /// /// 推进到下一个输入 /// public void Advance() { if (_index < _inputSequence.Length) { _index++; } } /// /// 是否还有更多输入 /// public bool HasMore => _index < _inputSequence.Length; /// /// 设置射击触发(下次 ConsumeShootInput 返回 true) /// public void SetShootTriggered() { _shootTriggered = true; } /// /// 设置瞄准方向 /// public void SetAimDirection(Vector3 direction) { _lastAimDirection = direction; } /// /// 获取当前输入索引 /// public int CurrentIndex => _index; }