2017-10-15 3 views
2

Ich habe diesen Code unter, macht nur einen scrollenden Hintergrund mit einem Quad. Meine Frage ist, wie kann ich das Scrollen des Hintergrunds nach einer bestimmten Zeit stoppen. Zum Beispiel möchte ich, nachdem ich das Ende meines Bildlaufs erreicht habe, das letzte sichtbare Teil als Hintergrund für den Rest des Levels sperren. Da mein Player eine konstante Geschwindigkeit hat, habe ich mir gedacht, dass etwas wie: nach vielleicht 20 Sekunden aufhören zu scrollen und halten Sie das Bild wäre möglich. Ich bin wirklich neu in der Einheit und ich bin mir nicht wirklich sicher, wie ich es machen soll, noch habe ich einen Weg gefunden, der funktioniert. Ich würde die Hilfe schätzen!Wie zu stoppen Textur Scrollen nach einer bestimmten Zeit

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; 
    } 
} 

Antwort

2

Sie können mit Time.deltaTime eine Update Funktion oder in einem Koroutine mit einem einfachen Timer dies zu tun. Erhöhen Sie einfach die Timer-Variable mit Time.deltaTime, bis Ihr Ziel erreicht ist. Dies ist Sekunden in Ihrem Fall.

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

Funktioniert wie ein Charme. Vielen Dank ! – TheNewbie

Verwandte Themen