Realisierung von Klickereignis und Erkennungsfunktion basierend auf Pico in der Unity-Entwicklung

Implementierung von Pico-Klickereignissen und Erkennungsfunktionen in der Unity-Entwicklung

1. Erstellen Sie ein RayCtrl-Skript und mounten Sie es (Strahlenerkennung bezieht sich auf den Artikel zur Strahlenerkennung auf der Homepage, daher werde ich hier nicht zu viel erklären)

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

public class RayCtrl : MonoBehaviour
{

    private LineRenderer line;
    public GameObject NowGameObject;

    private GameObject StartPos;
    public static Vector3 hitPos;
    public Transform dot;

    private RaycastHit hit;

    public static string name;

    // Use this for initialization
    void Start()
    {
        line = transform.Find("ray_LengthAdaptive").GetComponent<LineRenderer>();
        line.gameObject.SetActive(true);
        dot = transform.Find("dot");
        dot.gameObject.SetActive(true);
        StartPos = GameObject.Find("StartPos");
        hitPos = Vector3.zero;
    }

    // Update is called once per frame
    void Update()
    {
        Ray ray = new Ray { origin = StartPos.transform.position, direction = StartPos.transform.forward };
        line.SetPosition(0, ray.origin);
        if (Physics.Raycast(ray, out hit, 1000))
        {
            line.SetPosition(1, hit.point);
            line.startColor = Color.green;
            dot.position = hit.point;
            hitPos = hit.point;
            NowGameObject = hit.transform.gameObject;
            name = NowGameObject.name;
        }
        else
        {
            line.SetPosition(1, ray.origin + ray.direction * 2);
            line.startColor = Color.red;
            dot.position = ray.origin + ray.direction * 2;
            hitPos = ray.origin + ray.direction * 2;
            name = null;
        }
    }
}

Die Einzelheiten sind wie folgt:

2. Erstellen Sie den Code GameObjectManager

Zur Vereinfachung der Erkennung habe ich hier eine Erkennung des Klickens mit der linken Maustaste geschrieben.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Pvr_UnitySDKAPI;

public class GameObjectManager : MonoBehaviour
{


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

    // Update is called once per frame
    void Update()
    {
        if (RayCtrl.name == this.gameObject.name)
        {
            if (Input.GetMouseButton(0) || Controller.UPvr_GetKey(1, Pvr_KeyCode.TRIGGER))
            {

              //这里写需要的功能

            }
        }
    }
}

Hier habe ich zum Testen ein Rotationsereignis geschrieben.

Fügen Sie das GameObjectManager-Skript dem Objekt hinzu, das interagieren muss (das Objekt muss einen Kollisionskörper haben).

 

Der Testeffekt ist in der Abbildung dargestellt:

Zu diesem Zeitpunkt ist die Implementierung der Klickereignis- und Erkennungsfunktionen von Pico in der Unity-Entwicklung abgeschlossen, und Sie können nach Ihren eigenen Bedürfnissen schreiben. Achtung, nicht verirren, im nächsten Abschnitt erkläre ich den Code der gängigen interaktiven Funktionen des Pico-Controllers für Fans.

Acho que você gosta

Origin blog.csdn.net/weixin_53754310/article/details/123652637
Recomendado
Clasificación