Как уничтожить конкретный объект при нажатии мышкой? - PullRequest
0 голосов
/ 17 февраля 2019

В настоящее время я делаю игру в песочнице, и она может создать объект с помощью левого клика.Но я изо всех сил пытаюсь уничтожить определенный объект, когда на него щелкают правой кнопкой мыши.Я посмотрел здесь предыдущие вопросы, но они не совсем отвечают на мой вопрос.

using UnityEngine;
using System.Collections;

public class ControlObjects : MonoBehaviour
{

    Vector3 mousePosition, targetPosition;

    //To Instantiate TargetObject at mouse position
    public Transform targetObject;
    public GameObject Prefab;

    float distance = 10f;

    Ray ray;
    RaycastHit hit;

    //public int item_num = 1;

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        transform.position = targetPosition;


        //To get the current mouse position
        mousePosition = Input.mousePosition;

        //Convert the mousePosition according to World position
        targetPosition = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, distance));

        //Set the position of targetObject
        targetObject.position = targetPosition;

        //Debug.Log(mousePosition+"   "+targetPosition);


        //If Left Button is clicked
        if (Input.GetMouseButtonDown(0))
        {
            //create the instance of targetObject and place it at given position.
            Instantiate(targetObject, targetObject.transform.position, targetObject.transform.rotation);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вы должны взглянуть на IPointerClickHandler .Прикрепите этот сценарий к объектам, которые вы хотите щелкнуть по

using UnityEngine;
using UnityEngine.EventSystems;

public class DestroyOnRightClick : MonoBehaviour, IPointerClickHandler 
{
    public void OnPointerClick (PointerEventData eventData) 
    {
        if (eventData.button == PointerEventData.InputButton.Right) 
        {
             Debug.Log ("Right Mouse Button Clicked on: " + name);
             Destroy(gameObject);
        }
    }
}

Примечание

Убедитесь, что в сцене существует EventSystem, чтобы разрешитьобнаружение щелчков.Для обнаружения щелчков на не-UI GameObjects убедитесь, что PhysicsRaycaster подключен к Camera.

0 голосов
/ 17 февраля 2019

Реализуйте то, что вам нужно, но это основа.

using UnityEngine;

public class Test : MonoBehaviour
{
    private float distance = 10;
    private float offset = -4;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Mouse1))
        {
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);

            go.transform.position = new Vector3
            {
                x = offset += 1.5f,
                y = 0,
                z = 0
            };
        }

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            if(Physics.Raycast(ray, out RaycastHit hit, distance))
            {
                Destroy(hit.transform.gameObject);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...