How to check if two sprites are the same
I'm making a game about catching falling teacups in a dish bin. One of the mechanics is that the game tells you what color teacup to catch at a certain time, but I'm having difficulty figuring out how to code this. What I want to do is check whether the sprite in a Sprite Renderer game object (the falling teacup) is the same as the sprite in the UI Image game object. If it is the same, the player gets a point.
Right now I have a simple OnCollisionEnter function attached to the dish bin that handles the collision, and my instinct is that another if statement goes inside here. But I don't know what it should say.
Thanks for any help you're able to give!
 void OnCollisionEnter2D(Collision2D other)
     {
         if (other.gameObject.CompareTag("teacup"))
         {
             Debug.Log("A teacup hit the bin!");
             Destroy(other.gameObject);
             GameManager.instance.IncreaseScore();
         }
     }
 
              Answer by fellovicbeatz · May 20, 2019 at 10:29 AM
I think , u could try to compare the Sprite source images.
Hello fellovic. This is not a real answer... i dont knwo the answer, but if say "compare", explain how.
Answer by epb267 · May 20, 2019 at 02:54 PM
okay, I figured it out! Should be:
  void OnCollisionEnter2D(Collision2D other)
     {
         if (other.gameObject.CompareTag("teacup"))
         {
             Debug.Log("A teacup hit the bin!"); //this checks to see whether ANY teacup hit the bin
             
             if (other.gameObject.GetComponent<SpriteRenderer>().sprite ==
                 _gameManager.targetTeacupHolder.GetComponent<Image>().sprite) //if the source sprite on the object that has been collided with matches the source sprite on the target image
             {
                 Debug.Log("The target kind of teacup hit the bin!");
                 Destroy(other.gameObject);
                 GameManager.instance.IncreaseScore();
             }
 
             if (other.gameObject.GetComponent<SpriteRenderer>().sprite !=
                 _gameManager.targetTeacupHolder.GetComponent<Image>().sprite)
             {
                 Debug.Log("Aww, you messed up");
             }
         }
     }
 
              Your answer
 
             Follow this Question
Related Questions
Sprite Renderer and Image 0 Answers
Change sprite based on movement direction 0 Answers
Stencil Buffer not working with SpriteMask 0 Answers
creating a 2d peeling system in unity 0 Answers
update sprites for multiple similar objects. Need help 1 Answer