Hi all, what I want to achieve is to know when a sprite is visible in the game scene using a sprite mask.
OnBecomeVisible()
or renderer.isVisible
does not seem to work. They are called right away or always set to true even though I am not showing them using a sprite mask.
What I want to get is to show specific enemies with my cursor, kind of like the Lens of Thruth in the Legend of Zelda, and that I have achieved. What I wanted to do now is do some other stuff(play sounds, particle effects, etc) at the moment the sprite becomes visible using my “Lens of Thruth”
I don’t find necessary to add any image or code since this question is pretty much straight forward, but if necessary I do it.
Any help with this will be much appreciated.
Hey @CesarCanto,
Have you considered using colliders/triggers?
Below is an example test script that demonstrates the idea of using colliders to detect when the sprite mask has revealed a sprite. The first screenshot shows the scene setup and sprite mask (“magic spotlight”) settings, and the second is the inspector for the sprite that is being revealed.
using UnityEngine;
public class MagicSpotlight : MonoBehaviour
{
Camera cam;
Transform camTransform;
Transform spotlightTransform;
void Start()
{
cam = Camera.main;
camTransform = cam.transform;
spotlightTransform = transform;
}
void Update()
{
var mousePos = Input.mousePosition;
mousePos.z = -camTransform.position.z;
var worldPos = cam.ScreenToWorldPoint(mousePos);
spotlightTransform.position = worldPos;
}
void OnTriggerEnter2D(Collider2D other)
{
Debug.Log($"Magic Spotlight revealed {other.gameObject.name}");
}
}
Hope this helps!
How are you toggling whether it is visable? if you just enable and disable the sprite renderer then you should be able to just use the below:
if(renderer == true)
provided you’re referencing the renderer correctly.