Начните менять цвет снова - PullRequest
       1

Начните менять цвет снова

0 голосов
/ 23 октября 2019

Итак, у меня есть скрипт управления, который меняет цвет спрайтов. Когда я нажимаю на спрайт, он падает и перестает менять цвет. При столкновении он проверяет, является ли цвет тем же, затем телепортирует спрайт обратно. Итак, теперь мой вопрос: как я могу изменить цвет снова?

Мой сменщик цвета:

public class control : MonoBehaviour
{
    public static bool m_isRunning = false;
    public static bool loop = true;
    public SpriteRenderer m_spriteRenderer;
    private Rigidbody2D rb;
    public static int random;
    public static float loopdelay = 0f;
    public static float intervalplayer = 1f; //interval 
    public static bool changecolorborder = true;
    public static bool fall = false;
    public static int gravity = 0;
    public static bool transform1 = false;

    private void Update()
    {
       random = Random.Range(1, 4);
        if (fall)
        {
            rb.gravityScale = gravity;
        }
        if (transform1)
        {
            transform.position = transform.position + new Vector3(0.002f, 1.998f, 0);
        }
        if(Input.touchCount == 1)
        {
            Debug.Log("Helloo");
        }
    }
    private void Start()
    {

        m_spriteRenderer = this.GetComponent<SpriteRenderer>();
        rb = GetComponent<Rigidbody2D>();

        StartCoroutine(Changecolor(0f));

    }

    private IEnumerator Changecolor(float loopdelay)
    {
        while (loop)
        {
            yield return new WaitForSeconds(intervalplayer);
            if (loop)
            {
                if (random == 1)
                {
                    Color newColor = new Color(0.68f, 0.63f, 0.76f);
                    m_spriteRenderer.color = newColor;
                }
                else if (random == 2)
                {
                    Color newColor = new Color(0.89f, 0.25f, 0.23f);
                    m_spriteRenderer.color = newColor;
                }
                else if (random == 3)
                {
                    Color newColor = new Color(0.68f, 0.88f, 0.33f);
                    m_spriteRenderer.color = newColor;
                }
                else
                {
                    Color newColor = new Color(0.38f, 0.21f, 0.72f);
                    m_spriteRenderer.color = newColor;
                }
            }
        }
    }
    private void OnMouseDown()
    {
        fall = true;
        loop = !loop;
        gravity = 1;
        changecolorborder = !changecolorborder;
    }




}

Мой контролер столкновений:

public class collision : MonoBehaviour
{
    public static int counter = 0;
    public static float waitime = 1f;
    public Rigidbody2D rb;
    public void OnCollisionEnter2D(Collision2D collision)
    {
        Text textMy = GameObject.Find("Canvas/Text").GetComponent<Text>();

        if (collision.gameObject.GetComponent<SpriteRenderer>().color != gameObject.GetComponent<SpriteRenderer>().color)
        {
            Destroy(collision.gameObject);
        }
        else
        {
            counter++;
            textMy.text = counter.ToString();
            control.gravity = 0;
            StartCoroutine(waitfor());

        }

    }
    IEnumerator waitfor()
    {
        yield return new WaitForSeconds(1);
        control.transform1 = true;
        yield return new WaitForSeconds(0.033f);
        control.transform1 = false;
    }
}

1 Ответ

0 голосов
/ 23 октября 2019

Я полагаю, что вы сбрасываете ваши значения, как в начале

fall = false;
loop = true;
gravity = 0;
changecolorborder = !changecolorborder;

И снова вызываете сопрограмму

StartCoroutine(Changecolor(0f));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...