using UnityEngine; using System.Collections.Generic; public class Centerer : MonoBehaviour { private bool _isCentered = false; private List _comboBuffer = new List(); // Секретная комбинация private readonly InSignal[] _secretCombo = new InSignal[] { InSignal.UpLeft, InSignal.UpLeft, InSignal.UpRight, InSignal.UpRight, InSignal.DownLeft, InSignal.DownRight, InSignal.DownLeft, InSignal.DownRight, InSignal.UpLeft }; void Update() { // Центрируем только если еще не центрировались if (!_isCentered && In.GetButtonDown(InSignal.CenterSensor)) { CenterCamera(); _isCentered = true; } else { // Проверяем секретную комбинацию для сброса CheckSecretCombo(); } } private void CenterCamera() { Quaternion cameraRotation = CamerasManager.VR_Camera.transform.rotation; float currentYaw = cameraRotation.eulerAngles.y; float deltaYaw = -currentYaw; CamerasManager.CamerasPivot.Rotate(0, deltaYaw, 0); } private void CheckSecretCombo() { // Проверяем нажатия клавиш для комбинации InSignal[] signalsToCheck = new InSignal[] { InSignal.UpLeft, InSignal.UpRight, InSignal.DownLeft, InSignal.DownRight }; foreach (InSignal signal in signalsToCheck) { if (In.GetButtonDown(signal)) { _comboBuffer.Add(signal); // Ограничиваем размер буфера размером комбинации if (_comboBuffer.Count > _secretCombo.Length) { _comboBuffer.RemoveAt(0); } // Проверяем совпадение if (IsComboMatch()) { ResetCenteredState(); _comboBuffer.Clear(); // Очищаем буфер после успешного ввода Debug.Log("Center state reset!"); } break; // Обрабатываем только одно нажатие за кадр } } } private bool IsComboMatch() { if (_comboBuffer.Count != _secretCombo.Length) return false; for (int i = 0; i < _secretCombo.Length; i++) { if (_comboBuffer[i] != _secretCombo[i]) return false; } return true; } private void ResetCenteredState() { _isCentered = false; } }