- Home /
Ui image appear and disappear on trigger
I am new to unity and I would like to understand how to make to appear an image when I enter to the trigger, and that when I exit to the trigger the image disappears. I tried to write this. Did I do something wrong? because this does not work. The image of the canvas always remains.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SeeObjectWhenEnterInTrigger : MonoBehaviour
{
[SerializeField] private Image customimage;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
customimage.enabled = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
customimage.enabled = false;
}
}
}
Answer by Lysander · Jan 01, 2018 at 08:25 PM
Looks fine. Standard questions:
Are you sure you've actually attached this to an object?
Are you sure the object this is attached to also has a Collider attached set to IsTrigger?
Are you sure you've assigned the image reference in the inspector and it's not throwing errors when trying to change it's Enabled status?
Are you sure the player object actually has its tag set to "Player"?
Are you sure the player object has a CharacterController or a rigidbody AND collider attached, to be able to activate triggers?
Are you sure that the layer this object is on, and the layer the Player object is on, are capable of colliding with one-another (check the Edit -> Project Settings -> Physics -> Layer Collision Matrix)?
Are you sure that the GameObject the image is on isn't disabled, or that's the canvas parent isn't disabled?
Are you sure that it isn't actually working, but the image is out of range of the camera, or that it's not visible to that camera specifically (on a layer not rendered by that camera)?
Lots and lots of things that this could be. Throw a Debug.Log check into the TriggerEnter/Exit functions to see if they're firing, and then go through the possibilities I've listed one by one based on whether it isn't getting that far (a problem with layers or colliders), or if it's getting that far and not mattering (a problem with the canvas / image object).
I forgot to put the tag "player" on the controller. Thank you very much for your help