Example #1
0
    // Update is called once per frame
    void Update()
    {
        int layerMask = 1 << 8;

        Vector3 euler         = transform.rotation.eulerAngles;
        Vector2 secondaryAxis = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick);

        euler.y += secondaryAxis.x;
        Avatar.transform.RotateAround(Head.transform.position, Vector3.up, secondaryAxis.x * turnSpeed * Time.deltaTime);

        RaycastHit hit;

        if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger))
        {
            if (Physics.Raycast(transform.position, transform.forward, out hit, Mathf.Infinity, layerMask))
            {
                Debug.DrawRay(transform.position, Vector3.forward * Mathf.Infinity, Color.red);

                if (hit.collider.gameObject.tag.Equals("Floor"))
                {
                    TeleportMarker.SetActive(true);
                    TeleportMarker.transform.position = hit.point;
                    Tele    = true;
                    TelePos = new Vector3(hit.point.x, Avatar.transform.position.y, hit.point.z);
                }
                else
                {
                    TeleportMarker.SetActive(false);
                    Tele = false;
                }

                if (hit.collider.gameObject.tag.Equals("Interactable"))
                {
                    hit.collider.gameObject.SendMessage("Action");
                }
            }
        }
        else
        {
            if (Tele)
            {
                Vector3 temp = new Vector3(Head.transform.localPosition.x / 2f, 0, Head.transform.localPosition.z / 2f);
                Avatar.transform.position = TelePos;// + temp;
                TeleportMarker.SetActive(false);
                Tele = false;
            }
        }

        if (Physics.Raycast(transform.position, transform.forward, out hit, Mathf.Infinity, layerMask))
        {
            Debug.DrawRay(transform.position, Vector3.forward * Mathf.Infinity, Color.red);

            if (hit.collider.gameObject.tag.Equals("Floor"))
            {
                TeleportMarker.SetActive(true);

                TeleportMarker.transform.position = hit.point;
            }
            else
            {
                TeleportMarker.SetActive(false);

                Tele = false;
            }
            if (hit.collider.gameObject.tag.Equals("Interactable"))
            {
                hit.collider.gameObject.SendMessage("HighLight");
            }
        }
    }
Example #2
0
 private void Start()
 {
     TeleportMarker.SetActive(false);
 }