Как проверить, касается ли палец области, в которой существует экземпляр объекта?

Есть способ размещать объекты на поверхности, проводя пальцем по экрану (спасибо @ryemoss за ответ здесь )

Теперь вопрос в том, как избежать размещения объектов друг над другом - как мы можем проверить, касается ли палец области, где уже существует экземпляр объекта, и размещать новые объекты только в том случае, если область пустой?

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


person Rumata    schedule 28.07.2017    source источник
comment
Вы можете выполнить raycast docs.unity3d.com/ScriptReference/Physics.Raycast.html : точка попадания может дать вам информацию, например, о типах объектов, пораженных лучом, включая котят.   -  person Greg    schedule 28.07.2017


Ответы (1)


Вот фрагмент из примеров Unity в SDK (отметьте здесь), который проверяет, был ли затронут существующий размещенный маркер (игровой объект) во время события касания:

        Touch t = Input.GetTouch(0);
        Vector2 guiPosition = new Vector2(t.position.x, Screen.height - t.position.y);
        Camera cam = Camera.main;
        RaycastHit hitInfo;

        if (t.phase != TouchPhase.Began)
        {
            return;
        }

        if (m_selectedRect.Contains(guiPosition))
        {
            // do nothing, the button will handle it
        }
        else if (Physics.Raycast(cam.ScreenPointToRay(t.position), out hitInfo))
        {
            // Found a marker, select it (so long as it isn't disappearing)!
            GameObject tapped = hitInfo.collider.gameObject;
            if (!tapped.GetComponent<Animation>().isPlaying)
            {
                m_selectedMarker = tapped.GetComponent<ARMarker>();
            }
        }

То, что вам нужно, обрабатывается

if (Physics.Raycast(cam.ScreenPointToRay(t.position), out hitInfo))
person Victor G    schedule 29.07.2017