Нужна помощь со скриптом (Решено)

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

Нужна помощь со скриптом (Решено)

Сообщение Mari4og 10 дек 2018, 12:13

Привет всем. Есть скрипт, висит на персонаже. Скрипт возвращает перса на чекпоинт, если тот падает ниже -12 по Y и затемняет экран. Я добавил на перса префаб "SpwnEff" - вспышка при появлении. Всё работает - но только 1 раз.)) А мне надо, чтоб "SpwnEff" срабатывал каждый раз, когда перс возвращается на чекпоинт. Т.е. после включения префаб остаётся включён. Как в "void Update" (или ещё где) отключать, через пару сек, этот префаб, что б он потом опять включился?
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FallDetect2 : MonoBehaviour
{
    public Texture2D fadeOutTexture;
    public float fadeSpeed = 0.8f;
    public GameObject SpwnEff;

    private int drawDepht = 1000;
    private float alpha = 1.0f;
    private int fadeDir = -1;


    void OnGUI()
    {
        alpha += fadeDir * fadeSpeed * Time.deltaTime;
        alpha = Mathf.Clamp01(alpha);

        GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, alpha);
        GUI.depth = drawDepht;
        GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), fadeOutTexture);

    }

    public float BeginFade(int direction)
    {
        fadeDir = direction;
        return (fadeSpeed);
    }

    void Start()
    {
        GameVariables.checkpoint = new Vector3(3, 6, -14);
        SpwnEff SetActive(false);              
    }
   
    void Update()
    {
        if (transform.position.y < -12)            
        {
           transform.position = GameVariables.checkpoint;
           alpha = 10;
           SpwnEff SetActive(true);                                    
        }
    }

    void OnLevelWasLoaded()
    {
        // alpha = 1;
        BeginFade(-1);
    }
}
Последний раз редактировалось Mari4og 16 янв 2019, 10:55, всего редактировалось 1 раз.
Mari4og
UNец
 
Сообщения: 25
Зарегистрирован: 26 авг 2015, 09:20

Re: Нужна помощь со скриптом

Сообщение 1max1 10 дек 2018, 12:33

Как в "void Update" (или ещё где) отключать, через пару сек, этот префаб, что б он потом опять включился?

Корутины используй для задержки.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Нужна помощь со скриптом

Сообщение Ziza 10 дек 2018, 12:39

Отключать через пару сек как-то так:

В Update добавить Invoke вызов метода
Синтаксис:
Используется csharp
Invoke("DisableSpwnEff", 2f);

ну а в класс сам метод:
Синтаксис:
Используется csharp
public void DisableSpwnEff()
{
    SpwnEff.SetActive(false);
}
Последний раз редактировалось Ziza 10 дек 2018, 12:41, всего редактировалось 1 раз.
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Нужна помощь со скриптом

Сообщение Ziza 10 дек 2018, 12:41

1max1 писал(а):Корутины используй для задержки.

Упс уже ответили) Да, можно и на корутинах)
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Нужна помощь со скриптом

Сообщение Mari4og 10 дек 2018, 13:08

Большущее спасибо за ответы.
Корутины, для меня, наверно, сложновато - я не программист совсем...
С Disable понятнее ;)
Mari4og
UNец
 
Сообщения: 25
Зарегистрирован: 26 авг 2015, 09:20

Re: Нужна помощь со скриптом

Сообщение 1max1 10 дек 2018, 13:37

я не программист совсем...

Аналогия:
Синтаксис:
Используется csharp
// Вызов
StartCoroutine(DisableSpwnEff(2.0f));

IEnumerator DisableSpwnEff(float sec)
{
    yield return new WaitForSeconds(sec);
    SpwnEff.SetActive(false);
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Нужна помощь со скриптом

Сообщение Mari4og 11 дек 2018, 08:16

Спасибо, 1max1. Это мне для "развития" )).
Mari4og
UNец
 
Сообщения: 25
Зарегистрирован: 26 авг 2015, 09:20


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

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

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