2016-05-10 8 views
0

Also habe ich ein einfaches Spiel mit ein paar Schlüsselfunktionen gemacht.Wechseln der Farben auf Sprites Ausgabe

Eine grundlegende Übersicht: Sie sind ein Quadrat. Sie müssen von Punkt A nach Punkt B kommen. Es ist ein Platformer. (Erstes Spiel, hasse nicht).

Wie auch immer, ich entschied mich, ein interessantes Feature zu implementieren. Es gibt nur 2 mögliche Farben. Schwarz und weiß. Wenn du weiß bist, dann ist der Boden schwarz. Wenn der Boden weiß ist, dann bist du schwarz. Der Hintergrund ist einfarbig weiß. Sie können also wählen, ob Sie Ihren Player ansehen oder sehen möchten, wohin Sie sich bewegen. Sie können mit der Umschalttaste hin- und herschalten.

Jetzt ist mein Problem, die Ebenen Farbe zu wechseln. Das Level ist allesamt trotz, mit einzeln platzierten Box Colliders auf den Plattformen. Ich kann auf dem Player zwischen Weiß und Schwarz wechseln, aber der Boden wechselt nicht die Farben, egal wie oft ich ihn drücke.

(Das Problem ist nicht mit dem Timing ist, gerade den Boden bekam Farben auch wechseln, wenn Shift gedrückt wird.)

Ich habe 2 separaten Skripte, die identisch sind. Der einzige Unterschied zwischen dem auf dem Boden und dem Booleschen ist, dass der Boolesche Wert getauscht wird, so dass Sie nie die gleiche Farbe wie der Boden haben. Hier ist mein Code. Kann mir jemand helfen herauszufinden, warum ich den Boden nicht ändern kann, aber der Spieler kein Problem? Gleiche mit den Spitzen passiert (Sie sind getrennt von Sprites)

private bool colorSet = true; 

void Start() 
{ 

} 


void Update() 
{ 
    if (Input.GetKeyDown (KeyCode.RightShift)) 
    { 
     colorSet = !colorSet; 
    } 


    if (colorSet == true) 
    { 
     gameObject.GetComponent<SpriteRenderer>().color = Color.white; 
     Debug.Log ("I should be white!"); 
    } 

    else if (colorSet == false) 
    { 
     gameObject.GetComponent<SpriteRenderer>().color = Color.black; 
     Debug.Log ("I should be black!"); 
    } 

} 

Antwort

0

ich Fälle, in denen ich die folgende bekommen Farbänderungen auf einem Sprite arbeiten zu tun haben. Es fügt nur das kleine Stück .material zu Ihrem Code hinzu.

gameObject.GetComponent<SpriteRenderer>().material.color = Color.your_color_here; 
+0

Vielen Dank! Ich werde es versuchen, sobald ich wieder in meiner Kampfstation bin. Es ist komisch, dass es auf dem Platz gut funktioniert hat, aber nicht auf der Karte? Vielleicht liegt es an all den verschiedenen Kollisionskisten oder so. – LaliKinux

+0

Wo ist das Skript angehängt? Ist es an das Spielobjekt angehängt, das das Sprite enthält? –

+0

Drag & Drop nach dem Verwenden des Sprite-Editors. Einzige Sache, die an sie angehängt ist, sind Box Collider, die eigentlichen Sprites sind zu nichts parentiert – LaliKinux

Verwandte Themen