'Destroying objects with clicking

Trying to figure out how to destroy an object by clicking on it. I have tried using

public void Destroy()
{
    if (Input.GetMouseButton(0))
        Destroy(GameObject);
}

but realise that this will destroy all gameobjects the script is attached to instead of the one I am clicking on.



Solution 1:[1]

Try this one:

public void OnMouseDown() => Destroy(gameObject);

Solution 2:[2]

Definitely the best way is to implement IPointerClick interface,

using UnityEngine;
using UnityEngine.EventSystems;

public class ClickDestroy : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
      GameObject.Destroy(gameObject);
    }

}

This will work both for UI and for 3D Objects, as long as your camera has PhysicsRaycaster and an EventSystem exists on scene

Solution 3:[3]

You can get the mouse position on the screen and fire a raycast from that location. If it hits a gameobject then you can pass it to a function to delete it.

void Update {

    //Check for mouse click
    if (Input.GetMouseButton(0))
    {

        //Create a ray from mouse location
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit = new RaycastHit();

        //Check if the ray hit a gameobject, gameobject will likely need a collider
        //for this to work
        if (Physics.Raycast(ray, out hit))
        {
            //If the ray hit a gameobject, destroy the gameobject
            Destroy(hit.gameobject)
        }
    }
}

When destroying gameobjects, make sure your specifying the gameobject component and not the script or another component of the gameobject.

This code can be improved by defining a camera object in your code and assigning a camera to it in the inspector instead of it defaulting to the main or setting up full player controls in unity (Which I can't remember how to do off the top of my head I'm afraid)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 KiynL
Solution 2 zambari
Solution 3 Istalri Skolir