using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // 如果您使用的是UGUI
public class SteeringWheelController : MonoBehaviour
{
public static SteeringWheelController Instance;
public Button[] buttons;
private int selectedButtonIndex = 0; // 当前选中的按钮索引
private bool hasSelected = false; // 是否已经进行了选择
// 硬件获取的方向盘角度
private float steeringWheelAngle;
// 方向盘选择角度阈值和中立阈值
public float selectionAngleThreshold = 30.0f; // 例如,30度
public float neutralAngleThreshold = 5.0f; // 方向盘接近中立位置的阈值
public float testFloatV;
private void Awake()
{
Instance = this;
}
void Update()
{
// 更新方向盘角度
UpdateSteeringWheelAngle();
// 检查方向盘角度并更新选中的按钮
CheckSteeringWheelAngle();
}
public void SSSS()
{
testFloatV = 45;
}
public void AAAA()
{
testFloatV = 0;
}
public void BBB()
{
testFloatV = -45;
}
///
/// 更新方向盘角度
///
private void UpdateSteeringWheelAngle()
{
// 这里需要替换成获取硬件方向盘角度的代码
steeringWheelAngle = testFloatV;
}
///
/// 判断方向盘左边还是右边
///
private void CheckSteeringWheelAngle()
{
if (Mathf.Abs(steeringWheelAngle) < neutralAngleThreshold)
{
hasSelected = false;
return;
}
if (!hasSelected)
{
if (steeringWheelAngle > selectionAngleThreshold)
{
// 向右转动
SelectNextButton();
hasSelected = true;
}
else if (steeringWheelAngle < -selectionAngleThreshold)
{
// 向左转动
SelectPreviousButton();
hasSelected = true;
}
}
}
///
/// 下一个按钮
///
private void SelectNextButton()
{
selectedButtonIndex = (selectedButtonIndex + 1) % buttons.Length;
Debug.Log("前进" + selectedButtonIndex);
HighlightButton(selectedButtonIndex);
}
///
/// 上一个按钮
///
private void SelectPreviousButton()
{
if (selectedButtonIndex == 0)
selectedButtonIndex = buttons.Length - 1;
else
selectedButtonIndex--;
Debug.Log("后退" + selectedButtonIndex);
HighlightButton(selectedButtonIndex);
}
///
/// 选择按钮变换
///
///
public void HighlightButton(int index)
{
for (int i = 0; i < buttons.Length; i++)
{
if (buttons[i].name == buttons[index].name)
{
buttons[i].GetComponent().OnClickSprite();
}
else
{
buttons[i].GetComponent().OnCancel();
}
}
}
// public void SelectButtonSprite( string btName)
// {
// for (int i = 0; i < buttons.Length; i++)
// {
// if (buttons[i].name == btName)
// {
// buttons[i].GetComponent().ClickSp();
// }
// else
// {
// buttons[i].GetComponent().Cancel();
// }
// }
// }
public void SelectButton()
{
buttons[selectedButtonIndex].GetComponent