Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зажатие кнопки геймпада в Unity.

Коля Колесников Ученик (195), открыт 2 недели назад
Я настроил геймпад через New Input System. Есть кнопка Turbo, которую я вызываю, вот код:
 private void Awake() 
{
controls = new Controller();
controls.Enable();
controls.Car.backforward.performed += ctx => backforward(ctx.ReadValue());
controls.Car.Stop.performed += ctx => Stop();
controls.Car.Turbo.performed += ctx => Turbo();
controls.Car.leftright.performed += ctx => leftright(ctx.ReadValue());
controls.Car.Rotate.performed += ctx => Rotate(ctx.ReadValue());




private void Turbo()
{
if (count != 0)
rb.MovePosition(rb.position + Vector3.forward * Turbo_speed);
}
Нужно сделать чтобы по ЗАжатию кнопки постоянно происходило действие. Сейчас в actions кнопка настроена как обычная.Буду рад если поможете)))
3 ответа
Джейсон Знаток (479) 2 недели назад
 private void Awake() 
{
controls = new Controller();
controls.Enable();
controls.Car.backforward.performed += ctx => backforward(ctx.ReadValue());
controls.Car.Stop.performed += ctx => Stop();
controls.Car.Turbo.started += ctx => StartTurbo();
controls.Car.Turbo.canceled += ctx => StopTurbo();
controls.Car.leftright.performed += ctx => leftright(ctx.ReadValue());
controls.Car.Rotate.performed += ctx => Rotate(ctx.ReadValue());
}

private Coroutine turboCoroutine;

private void StartTurbo()
{
if (turboCoroutine == null)
{
turboCoroutine = StartCoroutine(TurboCoroutine());
}
}

private void StopTurbo()
{
if (turboCoroutine != null)
{
StopCoroutine(turboCoroutine);
turboCoroutine = null;
}
}

private IEnumerator TurboCoroutine()
{
while (true)
{
if (count != 0)
{
rb.MovePosition(rb.position + Vector3.forward * Turbo_speed);
}
yield return new WaitForFixedUpdate();
}
}
Коля КолесниковУченик (195) 2 недели назад
спасибо
Глеб Кулапин Профи (833) 2 недели назад
Для реализации зажатия кнопки геймпада в Unity с помощью New Input System, вам нужно будет использовать события `JustPressed` и `JustReleased`. Событие `JustPressed` срабатывает, когда кнопка нажата первый раз, а `JustReleased` - когда кнопка отпущена. Вы можете использовать эти события для начала и окончания выполнения действия.

Вот пример кода, который реализует зажатие кнопки:

```csharp
private void Turbo()
{
// Проверяем, была ли кнопка нажата впервые
if (controls.Car.Turbo.justPressed)
{
StartCoroutine(TurboRoutine());
}
}

private IEnumerator TurboRoutine()
{
while (controls.Car.Turbo.isPressed) // Проверяем, продолжает ли кнопка быть нажатой
{
rb.MovePosition(rb.position + Vector3.forward * Turbo_speed);
yield return null; // Ожидаем до следующего кадра перед следующим движением
}

// Когда кнопка отпускается, завершаем выполнение корутины
yield break;
}

// Обработчик для события отпускания кнопки
private void TurboReleased()
{
if (controls.Car.Turbo.justReleased)
{
StopCoroutine("TurboRoutine"); // Останавливаем корутину
}
}
```

Не забудьте добавить обработчик для события `TurboReleased`, чтобы корректно останавливать корутину, когда кнопка отпускается:

```csharp
private void OnEnable()
{
controls.Car.Turbo.justPressed += Turbo;
controls.Car.Turbo.justReleased += TurboReleased;
}

private void OnDisable()
{
controls.Car.Turbo.justPressed -= Turbo;
controls.Car.Turbo.justReleased -= TurboReleased;
}
```

Этот код предполагает, что у вас есть объект с компонентом Rigidbody под именем `rb`. Убедитесь, что вы правильно настроили Input Action для кнопки Turbo как `Just Pressed` вместо `Performed`.
Баха 07 Мастер (1182) 2 недели назад
Коричневое ухо фараонов, китовых борозд на грифах оснащения НЛО с подоплёкой зрелости вправленного закатившегося ирокеза аккомпанементов... метеоритов с призмой хип-хооопааа... в гладком инструменте минимума каверзных животных мииирааа... относясь к морям галактики для прояснения педалей слёё-ёёёз... Как первая крепкая планета шествования с остатком отъёма строгого превращения пирамиды в излучатель системы гениальной головы лечения больных людееей... Как огромнейшая потуга заутюженного солнцем стееебля... для огромного пресса обводки лица, отгравированного плауна, мягкой логики в распространении среди людей правдивых управлений стежками, троекратного корня компьютера в превышенном шлейфе стройки логики, как связь звёзд... и доброты в сжатом кулакеее! Обоюдности просоты... простоты с перебитым штатом бессмертия... Как впрягающаяся верховность правления комка, просчитанного в прошлом времени и во всём времени галактики, двигателя сердца – главного снижателя эмоций в сторону рассудительного плааачааа! Как раскрытая идентичность любви! Как слитая земля программой НЛО для адекватности управления головой. Затягивали те... человека в тёплую полость рубящих камней психики для удержания от слёёёз относительно фараонов. Чтобы добротная рассеянность живучести толкалки... зарисованной логики рубикона ярко-выраженных вкраплений мяяясааа. На коротящих усыпальницах раскрашенной фараонской божественной ответственности пирамид было щенком... тонкого шествования по земле, как наша планета, стоящая на месте с уступкой главы мечты для всеобъемлющих памм... планет памяти слёёёз! Это шевелящиеся своды солнца в системе соединения-пропадания пищи пирамид, в заблокированном проходе впаривания, впаривания, йоу, галактики, как нахождения в строго определенном месте без совершенных разработок науки, чтобы получить послание человека, который в принципе не замени... не за... поминает точно, то как его наземную основу сносок проложенных путей тела человека сделать аккурааатностью продолжения каждой секунды жииизни... с приплюсовкой инициатив лучших сил в миииреее! Как обнадеживающий надежды мииинимума сетчатки... для слива краевых дыр... в растениях зарастания проектичиских широких возможностей упёртого падения монееет... в кулачном пространстве схождения вниз... вниз... вниз... Как раскрытие духовного храаама первого контроллера великого... проложенного пути людей в обволакивателе пшеничного шевеления третьего глаза, отработанных костей удержания пресной воды в отпариванном фрукте рабочего потенциала старой школы молодёёёжиии! В превращение шествования океанического планктона на открестках карты мира, как сложность того, что такое в принципе значимость жииизни! Значимость жизни, если люди не могут стать бессмертными, исходя из капающих разъёмов чернильных громил, та... тающих пУговиц в просто... утягивающих ла... лопатках зам-ках груши... не считая тайного положения тапок, как лестница доработованного в венцах вощей и бицепсов с крюком тыльного среза подпёртой уууткиии из болота и пуговица маленького веса, раскачивающихся на ветру... оторопелых... грузиков. Как боговая рекла... река. Как коллапс и терпение гравюр картииин... ута... утянутых завивалок третьего лицаааа... Боч-каа... тормозных... болванок... огромнейшей тайны, исходя из контроля совершееенствааа!
Похожие вопросы