GetKey срабатывает несколько раз
Добавлено: 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;
}
}
}
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;
}
}
}