Я хочу создать куб только тогда, когда происходит другое событие - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть эти события, я хочу создать событие для создания нового куба, как в функции OnPointerEnter, это может создать событие в единстве, которое указывает на OnPointerEnter. Как? Я пытаюсь с функцией триггера события, но я не хочу, чтобы "по событию Pointer Click" я хотел "событие двойного щелчка", если это возможно, или аналогичное событие триггера в инструментарии смешанной реальности ... как событие воздушного крана, чтобы создать новый куб.

enter image description here

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.MixedReality.Toolkit.Input;

public class Touchablecube : MonoBehaviour, IMixedRealityPointerHandler
{

    Color colorBlue = Color.blue;
    Renderer rend;
    GameObject cube;

    public void OnPointerClicked(MixedRealityPointerEventData eventData)
    {
        rend.material.color = colorBlue;
        //Vector3 v = new Vector3(
        //                eventData.Pointer.Position.x,
        //                eventData.Pointer.Position.y,
        //                eventData.Pointer.Position.z);

    }


    public void OnPointerDown(MixedRealityPointerEventData eventData)
    {
        rend.material.color = Color.red;

    }

    public void OnPointerDragged(MixedRealityPointerEventData eventData)
    {
        rend.material.color = Color.yellow;
        Vector3 v = new Vector3(
                           eventData.Pointer.Position.x,
                           eventData.Pointer.Position.y,
                           eventData.Pointer.Position.z);
        rend.transform.position = v;

    }

    public void OnPointerUp(MixedRealityPointerEventData eventData)
    {
        rend.material.color = Color.green;


    }

    public void OnPointerEnter()
    {
        cube = (GameObject)Resources.Load("Cube", typeof(GameObject));
        var obsIns = Instantiate(cube, transform.position, transform.rotation);
        obsIns.SetActive(true);
    }

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        rend = GetComponent<Renderer>();
    }

}

1 Ответ

0 голосов
/ 25 февраля 2020

В MRTK событие OnPointerClicked запускается при нажатии контроллера. Например, щелчок для HoloLens 1 и 2 - это жест крана, а щелчок в VR - нажатие кнопки запуска на контроллере. Щелчок также может быть смоделирован в редакторе в режиме воспроизведения с использованием имитации ввода. Чтобы использовать симуляцию ввода, удерживайте клавишу пробела, чтобы показать руку симуляции ввода, а затем щелкните мышью, чтобы смоделировать щелчок для руки в режиме игры. Информация о моделировании ввода

По умолчанию события указателя инициируются, если объект игры находится в фокусе. Если вы хотите использовать события указателя глобально, IMixedRealityPointerHandler необходимо зарегистрировать глобально следующим образом:

    private void OnEnable()
    {
        CoreServices.InputSystem?.RegisterHandler<IMixedRealityPointerHandler>(this);
    }
    private void OnDisable()
    {
        CoreServices.InputSystem?.UnregisterHandler<IMixedRealityPointerHandler>(this);
    }

Вы можете создать куб при нажатии, переместив функцию OnPointerEnter() в OnPointerClicked. Куб создается в месте щелчка во фрагменте кода ниже:

    private void OnEnable()
    {
        CoreServices.InputSystem?.RegisterHandler<IMixedRealityPointerHandler>(this);
    }
    private void OnDisable()
    {
        CoreServices.InputSystem?.UnregisterHandler<IMixedRealityPointerHandler>(this);
    }

    public void OnPointerClicked(MixedRealityPointerEventData eventData)
    {
        Debug.Log("OnPointerClicked");
        OnPointerEnter(eventData.Pointer.Position);
    }

    public void OnPointerEnter(Vector3 cubePosition)
    {
        GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        cube.transform.localScale = Vector3.one * 0.1f;
        cube.transform.position = cubePosition;   
    }

Gif фрагмента кода Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...