Ich verwende Unity 5 und wollte auf Kollision überprüfen, wenn zwei Spielobjektmaterial die gleiche übereinstimmende Farbe haben und Maßnahmen ergreifen, wenn die Farben nicht übereinstimmen. Ich bin mit dem C# -Code unter:Unity, wie nach Farbübereinstimmung zu überprüfen
void OnCollisionEnter2D(Collision2D col)
{
if(col.gameObject.GetComponent<Renderer>().material.color != this.gameObject.GetComponent<Renderer>().material.color)
{
Destroy(col.gameObject);
}
}
Dies scheint nicht richtig, wie die manchmal die Gameobject sogar Streichhölzer zerstört werden, wenn die Farbe zu arbeiten. Ich frage mich nur, ob es eine andere Möglichkeit gibt, nach Farbübereinstimmungen zu suchen?
void OnCollisionEnter2D(Collision2D col)
{
Color myColor = GetComponent<Renderer>().material.color;
Color otherColor = col.gameObject.GetComponent<Renderer>().material.color;
if(myColor.Equals(otherColor))
{
Destroy(col.gameObject);
}
}
Wenn dies nicht funktioniert:
schreiben Erweiterungsmethode für color
und es verwenden, wie dies
Haben Sie versucht, jede Komponente (rgba oder xyzw) Vergleichen getrennt? Es ist ein Schmerz, aber funktioniert. – Cabrra
Der Grund dafür ist, dass Sie nicht zwei Farben vergleichen, sondern zwei "Color" -Objekte für die Gleichheit (was höchstwahrscheinlich nicht der Fall ist, auch wenn sie dieselben Werte enthalten). Wenn Sie die Farben vergleichen möchten, müssten Sie jede einzelne Komponente (r, g, b und vielleicht sogar Alpha) vergleichen, wenn sie dieselben Werte haben (die Konvertierung zu 'Vector4' und der Vergleich könnte auch funktionieren). – UnholySheep