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

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

СообщениеДобавлено: 10 дек 2018, 12:13
Mari4og
Привет всем. Есть скрипт, висит на персонаже. Скрипт возвращает перса на чекпоинт, если тот падает ниже -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);
    }
}

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

СообщениеДобавлено: 10 дек 2018, 12:33
1max1
Как в "void Update" (или ещё где) отключать, через пару сек, этот префаб, что б он потом опять включился?

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

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

СообщениеДобавлено: 10 дек 2018, 12:39
Ziza
Отключать через пару сек как-то так:

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

ну а в класс сам метод:
Синтаксис:
Используется csharp
public void DisableSpwnEff()
{
    SpwnEff.SetActive(false);
}

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

СообщениеДобавлено: 10 дек 2018, 12:41
Ziza
1max1 писал(а):Корутины используй для задержки.

Упс уже ответили) Да, можно и на корутинах)

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

СообщениеДобавлено: 10 дек 2018, 13:08
Mari4og
Большущее спасибо за ответы.
Корутины, для меня, наверно, сложновато - я не программист совсем...
С Disable понятнее ;)

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

СообщениеДобавлено: 10 дек 2018, 13:37
1max1
я не программист совсем...

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

IEnumerator DisableSpwnEff(float sec)
{
    yield return new WaitForSeconds(sec);
    SpwnEff.SetActive(false);
}

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

СообщениеДобавлено: 11 дек 2018, 08:16
Mari4og
Спасибо, 1max1. Это мне для "развития" )).