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