GetKey срабатывает несколько раз

Программирование на Юнити.

GetKey срабатывает несколько раз

Сообщение Porosenok.reyzi 16 янв 2023, 08:47

Здравствуйте, при нажатии на кнопку(при преодолении триггера) объект должен выключать визуальный вид, что он и делает, но я для проверки вывожу надпись в консоль, и при одном нажатии выводится несколько надписей. Я понимаю что это связано с кадрами, но как сделать так, чтобы при одном нажатии срабатывало ровно один раз. GetKeyDown не работает в триггере вообще(так как первый кадр далеко позади).
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class hide : MonoBehaviour
{
   // bool key = false;
    private GameObject player;
    private void OnTriggerStay2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Player"))
        {
            player = other.gameObject;
            if (Mathf.Abs(other.transform.position.x - gameObject.transform.position.x) < 2)
            {
                gameObject.GetComponent<SpriteRenderer>().color = Color.red;
                if (Input.GetKey(KeyCode.E))
                {
                       other.gameObject.GetComponent<SpriteRenderer>().enabled = false;
                        Debug.Log("Yes");

                }
            }
            else
                gameObject.GetComponent<SpriteRenderer>().color = Color.blue;

        }
    }
}
 
Porosenok.reyzi
UNец
 
Сообщения: 1
Зарегистрирован: 16 янв 2023, 08:38

Re: GetKey срабатывает несколько раз

Сообщение waruiyume 16 янв 2023, 11:16

Инпуты обновляются в апдейте, а физика в фикседапдейте, у который разная частота. Как вариант ставим в апдейте флаг, а в триггерстей, снимаем его после использования.
Ещё там должно быть GetKeyDown.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8