Jump to content
Unity Insider Forum

GameObject mit TriggerCol um Faktor X bewegen - GELÖST


Der_Stefan_

Recommended Posts

Es ist immer sooo ätzend, wenn einen das Anfänger-Dasein einholt... Seit 3 Tagen sitze ich jetzt schon an einer absoluten Banalität, Googlen, YouTube Videos gucken, ausprobieren... Der Frust wächst, ich kriege es einfach nicht gebacken...

Für ein Endlos-Level habe ich einen Streckenabschnitt gebaut und wollte als Prefab über einen TriggerCollider vor dem Spieler neu generieren lassen - und hinter ihm natürlich löschen. Nachdem ich daran schon ziemlich gescheitert bin, habe ich irgendwo von einer Realisierung gelesen, wo jemand den Abschnitt einfach über einen Trigger Collider bewegt hat. Sprich, am Ende des Objektes passiert der Spieler den Collider und das Objekt "springt" um seine eigene Länge nach vorne. Kein Generieren, kein Destroyen nötig. Klingt gut, klingt einfach. Die Bewegung habe ich mit Transform.Position auch soweit hinbekommen, aber eben nur als Bewegung auf eine bestimmte Position:

transform.position = new Vector3(0.0f, 0.0f, 500.0f)

Die Frage ist, wie bekomme ich es hin, dass die jeweils die aktuelle Position mit dem Faktor 500 summiert wird? Klar, über die Transform.Position natürlich nicht. Aber z.B. über Vector3.MoveTowards komm ich irgendwie auch nicht weiter...

 

Das Bild zeigt das Objekt und den Trigger davor. Ist natürlich alles noch nicht final positioniert, ich versuche gerade erstmal die grundsätzliche Funktion hinzubekommen...

Snip1.JPG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh, ich stelle gerade fest, das
a) das Space Shooter Tutorial schon recht alt ist und
b) ich es auf der geänderten Unity-Seite auf Anhieb gar nicht mehr finde, sondern erst nach Eingabe von "space shooter tutorial", bzw.
c) genau der Abschnitt mit dem sich bewegenden Hintergrund scheinbar gar nicht mehr in dem Tutorial enthalten ist.

Deshalb hier mein Script, welches ich auf Grundlage des oben genannten Tutorial erstellt habe:

public class BGScroller : MonoBehaviour
{
    [SerializeField]
    private float scrollSpeed;
    [SerializeField]
    private float tileSizeZ;
    public bool scrollYes = false;
    [SerializeField]
    private float startScroll;

    private Vector3 startPosition;

	void Start ()
	{
        Invoke("StartScrolling", startScroll);
	}

    private void StartScrolling()
    {
        startPosition = transform.position;
        scrollYes = true;
    }

    void Update ()
	{
        if (scrollYes)
        {
            float newPosition = (Mathf.Repeat(Time.time * scrollSpeed, tileSizeZ)) - tileSizeZ;
            transform.position = startPosition + Vector3.forward  * newPosition;
        }
        
	}
}

Das gesamte Thema um die Variable "scollYes" kann auch weggelassen werden.

Auf Youtube ist noch eine gesamte Zusammenstellung des Tutorial enthalten. Ab ca. Minute 20 geht es hier um den Hintergrund:

Ich hoffe, es hilft dir weiter.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb Der_Stefan_:

Die Frage ist, wie bekomme ich es hin, dass die jeweils die aktuelle Position mit dem Faktor 500 summiert wird? Klar, über die Transform.Position natürlich nicht.

Aber doch :)

Wie @Jomnitech schrieb, oder einfach

transform.position += new Vector3(0.0f, 0.0f, 500.0f) ;

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb Sascha:

Aber doch :)

Wie @Jomnitech schrieb, oder einfach


transform.position += new Vector3(0.0f, 0.0f, 500.0f) ;

 

Ich weiß nicht, was ich gerade frustrierender finde. Dass ich 3 Tage vergeblich rumgebastelt habe um jetzt rauszufinden, dass in meinem Script schlicht und ergreifend ein einziges Plus-Zeichen fehlte, oder dass ich recht hatte und es sich tatsächlich um eine Banalität handelte... Fuuuu... Ich danke dir für den Hinweis, so funktioniert es, genau so wollte ich es haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb KaBau:

Bewegt sich dein Spieler, oder die Fläche unter dir? Für den zeiten Fall schau dir Mal das Space Shooter Tutorial direkt von Unity an. In einem Teil wird der Untergrund immer wieder neu versetzt.

Ne, ganz anders. Die "Fläche" unter mir sind Röhren-Segmente, durch die der Spieler "hindurchfliegt". Den Teil oben habe ich nur zur besseren Ansicht des Trigger-Collider dupliziert. Im Anhang noch mal eine 3-Dimensionale Ansicht.

Den Aufbau habe ich mir so gedacht, dass ich 4 Segmente der Röhre habe, jeweils 200 Zähler lang. Sobald der Spieler es passiert hat, springt es um 800 Zähler nach vorne, so dass konsequent immer 4 Röhrensegmente vor dem Spieler liegen. Sorry wenn ich den Aufbau etwas ungenau erklärt hab.

Deinen Videolink habe ich vorhin kurz mal durchgeflogen. Danke dir dafür, das gucke ich mir heute Abend auf jeden Fall noch mal genauer an. 

Nach gut 3 Monaten habe ich mittlerweile die an der Oberfläche kratzenden Grundlagen drauf, aber es folgen noch immer auf jedes gelöste Problem 2 neue Aufgaben. Ist immer ein bisschen Sherlock Holmes spielen, die Fehler zu finden :D  

Snip1.JPG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...