2017-10-15 14 views
2

J'ai ce code ci-dessous qui, fait juste un fond de défilement avec un Quad. Ma question est comment puis-je arrêter le défilement de l'arrière-plan après un certain temps. Par exemple, je veux après avoir atteint la fin de mon image défilante, la dernière pièce visible à être verrouillé comme arrière-plan pour le reste du niveau. Puisque mon joueur a une vitesse constante, j'ai imaginé quelque chose comme: après peut-être 20 secondes, arrêtez de défiler et garder l'image serait possible. Je suis vraiment nouveau à Unity et je ne suis pas vraiment sûr de la façon de le faire ni de trouver un moyen qui fonctionne. Je vous serais reconnaissant de l'aide!Comment arrêter le défilement de texture après un certain temps

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class BG : MonoBehaviour 
{ 

    public float speed; 
    void Start() 
    { 

    } 
    void Update() 
    { 
     Vector2 offset = new Vector2(0, Time.time * speed); 
     GetComponent<Renderer>().material.mainTextureOffset = offset; 
    } 
} 

Répondre

2

Vous pouvez le faire avec une minuterie simple avec Time.deltaTime une fonction Update ou dans le un coroutine. Il suffit d'incrémenter la variable timer avec Time.deltaTime jusqu'à ce qu'elle atteigne votre cible, soit secondes dans votre cas.

float timer = 0; 
bool timerReached = false; 
const float TIMER_TIME = 30f; 

public float speed; 

void Update() 
{ 
    if (!timerReached) 
    { 
     timer += Time.deltaTime; 

     Vector2 offset = new Vector2(0, Time.time * speed); 
     GetComponent<Renderer>().material.mainTextureOffset = offset; 
    } 


    if (!timerReached && timer > TIMER_TIME) 
    { 
     Debug.Log("Done waiting"); 

     //Set to false so that We don't run this again 
     timerReached = true; 
    } 
} 
+1

Fonctionne comme un charme. Je vous remercie ! – TheNewbie