私はUnity 5を使用していて、2つのゲームオブジェクトマテリアルが同じマッチングカラーを持っているかどうかをチェックし、カラーが一致しない場合はアクションを実行します。私は、以下のC#のコードを使用しています:Unityカラーマッチをチェックする方法
void OnCollisionEnter2D(Collision2D col)
{
if(col.gameObject.GetComponent<Renderer>().material.color != this.gameObject.GetComponent<Renderer>().material.color)
{
Destroy(col.gameObject);
}
}
これは時々ゲームオブジェクトは色が一致した場合でも破壊されますと正常に動作して表示されません。色の一致を確認する別の方法があるのかどうか疑問に思うだけですか? color
ため
書き込み拡張メソッドをし、このようにそれを使用する:これが機能しない場合
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);
}
}
:
あなたが個別に各コンポーネント(RGBAまたはXYZW)を比較してみましたか?それは痛みですが動作します。 – Cabrra
2つの色を比較していないため、2つの 'Color'オブジェクトが等価である(同じ値を保持していてもそうでない可能性が高い)ため、失敗する理由があります。色を比較したい場合は、同じ値( 'Vector4'に変換して比較することもできます)がある場合は、個々のコンポーネント(r、g、b、おそらくはアルファ)を比較する必要があります – UnholySheep