Удаление 2D объектов на ощупь с помощью Raycasting? - PullRequest
0 голосов
/ 03 февраля 2019

Я пытался использовать лучевое вещание большую часть дня, чтобы удалить 2D-объекты.Я знаю, как использовать метод OnMouseDown, чтобы эффективно делать то же самое, и я использовал его до сих пор.Но я читал, что использование raycastign гораздо более эффективно, чем использование метода OnMOuseDown, поскольку метод OnMouseDOwn был разработан специально для щелчков мышью.Просматривая учебники, а также читая форумы, я видел людей, использующих различные техники, классы и методы лучевого вещания, доступные в библиотеках Unity, но в основном они используются для трехмерных объектов.Поскольку я разрабатываю 2D-игру, я хочу узнать, как это сделать для 2D-объектов.Я пробовал несколько вещей, чтобы заставить его работать, но nothign, кажется, работает:

Я пытался использовать Raycasthit2D, Raycast2D, и ничего не работает

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TouchTest : MonoBehaviour
{
        void Start()
        {

        }
        //public Vector2 direction;

        void Update()
        {
            //Cast a ray in the direction specified in the inspector.
            RaycastHit2D hit = 
               Physics2D.Raycast(this.gameObject.transform.position, 
              Input.GetTouch(0).position);

            //If something was hit.
            if (hit.collider != null)
            {
                //Display the point in world space where the ray hit the collider's surface.
                Debug.Log("We Hit something");
            }
        }
}

В результате должно получиться, что он выводит«мы ударяем что-то» в консоли, когда я касаюсь объекта в Unity Remote, но он ничего не делает, кроме того, что говорит, что мой индекс для Input.GetTouch (0) .position вышел из строя.Несмотря на то, что он говорит об этом, он часто говорит об этом, но для другого кода ему все же удается выполнить то, что я хочу, но для этого кода он не работает и все же говорит, что индекс вышел из строя.

1 Ответ

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

Ошибка, которую вы получаете, заключается в том, что при вызове функции мышь не нажимается.

Вы должны сделать это в методе OnMouseDown или поместить его в оператор if, который позволяет запускать его только при нажатии мыши.

Хороший учебник по этому вопросу можно найти здесь .

Лучший способ (если вы используете только 2D) - проверить, находится ли щелчок мыши по форме при клике:

  1. Проверьте, когда нажата мышь, и найдите ее положение.

  2. Получить прямоугольник тела и сравнить его с положением мыши.

  3. Если прямоугольник тела содержит положение мыши, мышь имеетщелкнул тело.

...