Страница 1 из 1

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

СообщениеДобавлено: 16 янв 2023, 08:47
Porosenok.reyzi
Здравствуйте, при нажатии на кнопку(при преодолении триггера) объект должен выключать визуальный вид, что он и делает, но я для проверки вывожу надпись в консоль, и при одном нажатии выводится несколько надписей. Я понимаю что это связано с кадрами, но как сделать так, чтобы при одном нажатии срабатывало ровно один раз. 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;

        }
    }
}
 

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

СообщениеДобавлено: 16 янв 2023, 11:16
waruiyume
Инпуты обновляются в апдейте, а физика в фикседапдейте, у который разная частота. Как вариант ставим в апдейте флаг, а в триггерстей, снимаем его после использования.
Ещё там должно быть GetKeyDown.