Home > Blockchain >  Destroying objects with clicking
Destroying objects with clicking

Time:05-17

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.

CodePudding user response:

Try this one:

public void onm ouseDown() => Destroy(gameObject);

CodePudding user response:

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

CodePudding user response:

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)

  • Related