public static Vector3 translateMMaptoMap(Vector3 localPose, monoMiniMap mMap)
    {
        Vector3 GlobalPose = new Vector3();

        GlobalPose.x = localPose.x * mMap.mainMap.terrainData.size.x;
        GlobalPose.z = localPose.z * mMap.mainMap.terrainData.size.z;
        GlobalPose.y = localPose.y * mMap.mainMap.terrainData.size.x;
        return(GlobalPose);
    }
    // Update is called once per frame
    void Update()
    {
        if (Controller.GetPress(SteamVR_Controller.ButtonMask.Trigger) || triggerDown)
        {
            triggerDown = true;
            RaycastHit hit;

            // 2
            if (Physics.Raycast(trackedObj.transform.position, transform.forward, out hit, 1000))
            {
                hitPoint = hit.point;
                ShowLaser(hit);

                reticle.SetActive(true);
                if (hit.collider.gameObject.name == "miniMap")
                {
                    hitPoint   = hit.collider.gameObject.transform.InverseTransformPoint(hitPoint);
                    hitPoint   = (hitPoint * map.map_width);
                    hitPoint.x = hitPoint.x - (Generate_Terrain.tile_width);
                    hitPoint.z = hitPoint.z - (Generate_Terrain.tile_height);

                    RaycastHit findHit;
                    Physics.Raycast(new Vector3(hitPoint.x, 3000, hitPoint.z), Vector3.down, out findHit);
                    hitPoint.y     = findHit.point.y;
                    teleTimeType.y = 1;
                }
                else if (hit.collider.gameObject.GetComponent <monoMiniMap>() != null)
                {
                    monoMiniMap miniMap = hit.collider.gameObject.GetComponent <monoMiniMap>();
                    hitPoint = hit.collider.gameObject.transform.InverseTransformPoint(hitPoint);
                    hitPoint = (hitPoint * miniMap.mainMap.terrainData.size.x);

                    hitPoint.y     = miniMap.mainMap.terrainData.GetHeight((int)hitPoint.x, (int)hitPoint.z);
                    teleTimeType.y = 1;
                }
                else
                {
                    teleTimeType.y = 0;
                }
                //Debug.Log(hitPoint.x + " " + hitPoint.y + " " + hitPoint.z);
                teleportReticleTransform.position = hitPoint + teleportReticleOffset;
                shouldTeleport = true;
            }
        }
        else // 3
        {
            laser.SetActive(false);
            reticle.SetActive(false);
        }
        if (Controller.GetPressUp(SteamVR_Controller.ButtonMask.Trigger) && shouldTeleport)
        {
            triggerDown = false;
            Teleport();
        }
    }
    public static Vector3 translateMaptoMMap(Vector3 GlobalPose, monoMiniMap mMap)
    {
        Vector3 localPose = new Vector3();

        localPose.x = GlobalPose.x;
        localPose.z = GlobalPose.z;
        localPose.y = GlobalPose.y;
        localPose   = localPose / mMap.mainMap.terrainData.size.x;

        return(localPose);
    }
示例#4
0
    // Update is called once per frame
    void FixedUpdate()
    {
        hitMiniMap = false;
        if (Controller.GetPress(SteamVR_Controller.ButtonMask.Trigger) || triggerDown)
        {
            triggerDown = true;
            RaycastHit hit;

            //values to tweak for better range of arc/precision.
            velocity.x = 3.5f;
            velocity.y = 1.5f;


            points = arcPoints(velocity.x, velocity.y);

            int hitnum;



            hit = ArcedRaycast(points, out hitnum);
            //change paraments
            //ShowArcedLaser(points, hitPoint, hitnum, hit);
            if (hit.collider != null)
            {
                // UnityEngine.Debug.Log("hit.collider is not null");
                hitPoint = hit.point;
                ShowArcedLaser(points, hitPoint, hitnum, hit);

                // End of additional input in this function
                //don't touch
                reticle.SetActive(true);

                if (hit.collider.gameObject.name == "miniMap")
                {
                    //  UnityEngine.Debug.Log("hit collides with miniMap");
                    hitMiniMap = true;
                    hitPoint   = hit.collider.gameObject.transform.InverseTransformPoint(hitPoint);
                    hitPoint   = (hitPoint * map.map_width);
                    hitPoint.x = hitPoint.x - (Generate_Terrain.tile_width);
                    hitPoint.z = hitPoint.z - (Generate_Terrain.tile_height);

                    RaycastHit findHit;
                    Physics.Raycast(new Vector3(hitPoint.x, 3000, hitPoint.z), Vector3.down, out findHit);
                    hitPoint.y     = findHit.point.y;
                    teleTimeType.y = 1;
                }
                else if (hit.collider.gameObject.GetComponent <monoMiniMap>() != null)
                {
                    hitMiniMap = true;
                    monoMiniMap miniMap = hit.collider.gameObject.GetComponent <monoMiniMap>();
                    hitPoint = hit.collider.gameObject.transform.InverseTransformPoint(hitPoint);
                    hitPoint = (hitPoint * miniMap.mainMap.terrainData.size.x);

                    hitPoint.y     = miniMap.mainMap.terrainData.GetHeight((int)hitPoint.x, (int)hitPoint.z);
                    teleTimeType.y = 1;
                }
                else
                {
                    teleTimeType.y = 0;
                }
                //Debug.Log(hitPoint.x + " " + hitPoint.y + " " + hitPoint.z);
                // teleportReticleTransform.position = hitPoint + teleportReticleOffset;
                shouldTeleport = true;
            }
            // UnityEngine.Debug.Log("hit.collider is null");
        }
        else // 3
        {
            for (int i = 0; i < laser.Count; i++)
            {
                laser[i].SetActive(false);
            }
            reticle.SetActive(false);
        }
        if (Controller.GetPressUp(SteamVR_Controller.ButtonMask.Trigger) && shouldTeleport)
        {
            triggerDown = false;
            Teleport();
        }
    }