VR Clicker

    0

    0

    UnityUnityUI

    Library: Unity

    using UnityEngine;
    
    public class Clicker : MonoBehaviour
    {
      public Transform raySource;
    
      private PlatformsManager _platformsManager;
      private TryGetTouchPosition _getTouch;
      private AudioSource _clickSource;
      private int _collectablesLayer;
    
      private void Awake()
      {
        _clickSource = GetComponent<AudioSource>();
        _getTouch = FindObjectOfType<TryGetTouchPosition>();
        _platformsManager = FindObjectOfType<PlatformsManager>();
        _collectablesLayer = LayerMask.GetMask("Collectables");
      }
    
      public bool Click(int layer, out RaycastHit hit, string caller)
      {
        hit = new RaycastHit();
        Ray? ray = null;
    
        if (_getTouch.TryOnce(out var touchPosition)) ray = _platformsManager.cam.ScreenPointToRay(touchPosition);
        else if (OVRInput.GetDown(OVRInput.Button.SecondaryIndexTrigger)) ray = new Ray(raySource.position, raySource.forward);
    
        if (!ray.HasValue) return false;
    
        if (Physics.Raycast(ray.Value, out hit, Mathf.Infinity, ~_collectablesLayer))
        {
          if (hit.collider.gameObject.layer == layer)
          {
            _clickSource.Play();
            return true;
          }
        }
    
        return false;
      }
    
      public bool Hover(int layer, out RaycastHit hit, string caller)
      {
        Ray? ray = _platformsManager.isVR ? new Ray(raySource.position, raySource.forward) : _platformsManager.cam.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray.Value, out hit, Mathf.Infinity, ~_collectablesLayer)) if (hit.collider.gameObject.layer == layer) return true;
    
        return false;
      }
    }
    Codiga Logo
    Codiga Hub
    • Rulesets
    • Playground
    • Snippets
    • Cookbooks
    Legal
    • Security
    • Privacy Policy
    • Code Privacy
    • Terms of Service
    soc-2 icon

    We are SOC-2 Compliance Certified

    G2 high performer medal

    Codiga – All rights reserved 2022.