Здравствуйте! Учусь делать игры на юнити. Захотелось сделать свою копию приложения "Выкрутасы". Это где нужно объяснять слова.
Управление процессом происходит при помощи акселерометра. Телефон наклонен назад - слово угадано, наклонен вперед - не угадано. Соответственно, после этого нужно сменить слово.
В Update я проверяю это условие наклона телефона. Если оно больше опред. значения, меняется слово. Проблема в том, что слова начинают меняться без остановки с большой скоростью. Как это исправить?
Наверное, нужно сделать какой-то обработчик событий или делать это не в Update. Подскажите, что нужно знать, чтобы решить эту проблему или хотя бы куда копать)
public class Test : MonoBehaviour
{
private string[] words = new string [6];
public Text currentText;
public float valueY;
// фильтр для акселерометра
public float AccelerometerUpdateInterval = 1.0f / 100.0f;
public float LowPassKernelWidthInSeconds = 0.001f;
public Vector3 lowPassValue = Vector3.zero;
void Start()
{
lowPassValue = Input.acceleration;
words[0] = "Кот";
words[1] = "Собака";
words[2] = "Ворона";
words[3] = "Курица";
words[4] = "Змея";
words[5] = "Бобр";
}
private void Update()
{
valueY = lowpass().y;
if (valueY <= -0.5f)
{
currentText.text = words[Random.Range(0, 5)];
}
else if(valueY >= -0.7f)
{
currentText.text = words[Random.Range(0, 5)];
}
}
//фильтр
Vector3 lowpass()
{
float LowPassFilterFactor = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds;
lowPassValue = Vector3.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);
return lowPassValue;
}
}