public virtual bool insideSprite(Camera camera, Sprite sprite, ICollection <TouchPhase> phases) { if (input.touchCount == 0) { return(false); } if (!touchesFor(phases).Any(touch => sprite.Contains(camera, touch.position))) { return(false); } var spritesInScene = gameObjectFinder.allSprites(); foreach (var touch in touchesFor(phases)) { if (!sprite.Contains(camera, touch.position)) { continue; } var topSprite = sprite; foreach (var spriteInScene in spritesInScene) { if (spriteInScene.Contains(camera, touch.position) && spriteInScene.worldPosition.z < sprite.worldPosition.z && (spriteInScene.getAlphaAtScreenPosition(touch.position) > OPAQUE)) { topSprite = spriteInScene; } } if (topSprite == sprite && topSprite.getAlphaAtScreenPosition(touch.position) > OPAQUE) { return(true); } } return(false); }