WedX - журнал о программировании и компьютерных науках

Как отключить сенсорное событие в AR Foundation (arkit)?

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

[RequireComponent(typeof(ARRaycastManager))]

public class PlaceOnPlane : MonoBehaviour
{
    [SerializeField]
    [Tooltip("Instantiates this prefab on a plane at the touch location.")]
    GameObject m_PlacedPrefab;

    /// <summary>
    /// The prefab to instantiate on touch.
    /// </summary>
    public GameObject placedPrefab
    {
        get { return m_PlacedPrefab; }
        set { m_PlacedPrefab = value; }
    }

    /// <summary>
    /// The object instantiated as a result of a successful raycast 
    intersection with a plane.
    /// </summary>
    public GameObject spawnedObject { get; private set; }

    void Awake()
    {
        m_RaycastManager = GetComponent<ARRaycastManager>();
    }

    bool TryGetTouchPosition(out Vector2 touchPosition)
    {
       #if UNITY_EDITOR
        if (Input.GetMouseButton(0))
        {
            var mousePosition = Input.mousePosition;
            touchPosition = new Vector2(mousePosition.x, mousePosition.y);
            return true;
        }
else
        if (Input.touchCount > 0)
        {
            touchPosition = Input.GetTouch(0).position;
            return true;
        }
#endif

        touchPosition = default;
        return false;
    }

    void Update()
    {
        if (!TryGetTouchPosition(out Vector2 touchPosition))
            return;

        if (m_RaycastManager.Raycast(touchPosition, s_Hits, TrackableType.PlaneWithinPolygon))
        {
            // Raycast hits are sorted by distance, so the first one
            // will be the closest hit.
            var hitPose = s_Hits[0].pose;

            if (spawnedObject == null)
            {
                spawnedObject = Instantiate(m_PlacedPrefab, 
           hitPose.position, hitPose.rotation);
            }
            else
            {
                spawnedObject.transform.position = hitPose.position;
            }
        }
    }

        static List<ARRaycastHit> s_Hits = new List<ARRaycastHit>();

    ARRaycastManager m_RaycastManager;
}

  • Используете ли вы какие-либо скрипты для взаимодействия с объектами? Если да, можете ли вы также поделиться кодом, который вы используете? 14.05.2020
  • Привет, @KBaker, я только что загрузил скрипт. 20.05.2020
  • Итак, каково текущее поведение? Вы нажимаете на экран, и он помещается, но при этом движется? 22.05.2020
  • на самом деле я использовал кнопку, чтобы поместить объект, поэтому не нужно нажимать. Когда я нажимаю кнопку, она помещает объект на поверхность, я хочу, чтобы касание было отключено, потому что всякий раз, когда я касаюсь дисплея, объект перемещается моим пальцем. я хочу, чтобы объект был неподвижен и не двигался, когда я касаюсь дисплея. @KBaker 24.05.2020
  • Пожалуйста, уточните через правки, а не комментарии. Пожалуйста, для вопросов по коду дайте минимальный воспроизводимый пример. 24.05.2020

Ответы:


1

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

spawnedObject.transform.position = hitPose.position;

Вы можете либо закомментировать эту часть, либо деактивировать скрипт, и то, и другое должно работать нормально.

24.05.2020
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]