Четверг, 14 Ноября 2024, 06:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как вывести картинку на определенное время?
GooDDarKДата: Четверг, 14 Апреля 2016, 17:11 | Сообщение # 1
уже был
Сейчас нет на сайте
Есть код, который позволяет "взять предмет", если игрок стоит рядом и при "взятии предмета" у меня вызывается картинка, перед этим созданная через UI и выключенная, на определенное время. Картинка вызывается, но висит на экране постоянно, как бы игнорируя мою проверку:

Код
if (OffVisible >= VisibleImage)
        {
            Image.SetActive (false);
        }


Сам код:

Код
public class GiveGrib : MonoBehaviour
{
    public GameObject Image;
    public float VisibleImage = 0.6f;
    private float OffVisible;

    void Awake () {
  Image.SetActive (false);
  OffVisible = 0.0f;
    }

    void Update ()
    {
    GameObject player = GameObject.FindGameObjectWithTag ("Player");
    if (Input.GetButtonDown ("Use") && Vector3.Distance(transform.position, player.transform.position)<2)
  {
   OffVisible += Time.deltaTime;
   Image.SetActive (true);
  }
  if (OffVisible >= VisibleImage)
  {
   Image.SetActive (false);
  }
    }
}


Сообщение отредактировал GooDDarK - Четверг, 14 Апреля 2016, 17:11
MystHuntДата: Четверг, 14 Апреля 2016, 18:01 | Сообщение # 2
был не раз
Сейчас нет на сайте
По моему, ты увеличиваешь OffVisible тогда, когда нажата клавиша "Use". Т.е. сколько ты раз нажал, то настолько и увеличивается.
P.s. Я бы наверное сделал через Invoke()
p.s.s "GameObject player = GameObject.FindGameObjectWithTag ("Player");" В Update не самый лучший способ использовать данную конструкцию


Сообщение отредактировал MystHunt - Четверг, 14 Апреля 2016, 18:06
LertmindДата: Четверг, 14 Апреля 2016, 18:48 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
MystHunt правильно сказал, но я бы использовал корутины так (код не проверял в проекте):
Код
public class GiveGrib : MonoBehaviour
{
    public GameObject Image_; // Есть класс с названием Image
    public float VisibleTime = 0.6f;
    
    private GameObject player;
    
    void Awake()
    {
        Image_.SetActive(false);
        player = GameObject.FindGameObjectWithTag("Player");
    }
    
    void Update()
    {
        if (Input.GetButtonDown("Use") && Vector3.Distance(transform.position, player.transform.position) < 2)
        {
            StartCoroutine(ShowImage());
        }
    }
    
    IEnumerator ShowImage()
    {
        if (Image_.activeInHierarchy)
            yield break; // Если уже показывается - выходим
        Image_.SetActive(true);
        yield return new WaitForSeconds(VisibleTime);
        Image_.SetActive(false);
    }
}
GooDDarKДата: Четверг, 14 Апреля 2016, 18:52 | Сообщение # 4
уже был
Сейчас нет на сайте
БОЛЬШОЕ СПАСИБО, ВЫ МЕНЯ СИЛЬНО ВЫРУЧИЛИ!!!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг