private void OnTriggerEnter(Collider other)
    {
        if (active && teleportPoint)
        {
            if (mask.IsLayerInLayerMask(other.gameObject.layer))
            {
                Transform parent = other.transform.parent;
                while (parent != null)
                {
                    if (mask.IsLayerInLayerMask(parent.gameObject.layer))
                    {
                        return;
                    }

                    parent = parent.parent;
                }

                Vector3 dist = transform.position - other.transform.position;

                TeleportTrigger otherTeleportTrigger = teleportPoint.GetComponent <TeleportTrigger>();
                if (otherTeleportTrigger)
                {
                    otherTeleportTrigger.active = false;
                }

                other.transform.position = teleportPoint.position - dist;
            }
        }
    }
Exemple #2
0
    void Start()
    {
        Teleporter teleporter = null;

        if (teleportType == TeleportType.CLICK || teleportType == TeleportType.BOTH)
        {
            ClickToTeleport ctTele = gameObject.AddComponent <ClickToTeleport>();
            ctTele.maxDistance = maxDistToClick;
            teleporter         = ctTele;
            SetTeleporterProperties(teleporter);
        }

        if (teleportType == TeleportType.TRIGGER || teleportType == TeleportType.BOTH)
        {
            TeleportTrigger teleTrigger = gameObject.AddComponent <TeleportTrigger>();
            teleTrigger.allowBackupTeleport = allowBackupTeleport;
            teleporter = teleTrigger;
            SetTeleporterProperties(teleporter);
        }


        // add helper message
        MessageOnHover msgObj       = gameObject.AddComponent <MessageOnHover>();
        string         actionStr    = (teleportType == TeleportType.CLICK) ? "Click to " : ((teleportType == TeleportType.BOTH) ? "Click or walk through to " : "Walk through to ");
        string         enterExitStr = (GameManager.Inst.LevelLoaded == GameManager.Level.CAMPUS || GameManager.Inst.LevelLoaded == GameManager.Level.MINICAMPUS) ? "enter" : "exit";

        msgObj.message     = actionStr + enterExitStr + " Room";
        msgObj.maxDistance = maxDistToClick;
    }
Exemple #3
0
        private void Awake()
        {
            var renderer = GetComponent <MeshRenderer>();

            m_Material        = new Material(renderer.material);
            renderer.material = m_Material;

            m_Collider         = GetComponent <BoxCollider>();
            m_Collider.enabled = false;

            m_Teleport = GetComponentInChildren <TeleportTrigger>(true);
            if (m_Teleport)
            {
                m_Teleport.HideGoal();
                m_Teleport.gameObject.SetActive(false);
            }
        }
Exemple #4
0
        private void OnTriggerEnter(Collider other)
        {
            TeleportTrigger teleportTrigger = null;

            if ((teleportTrigger = other.GetComponent <TeleportTrigger>()) != null)
            {
                if (teleportTrigger.ShouldTeleportInstantly)
                {
                    transform.position = teleportTrigger.TeleportGoal;
                }
                else
                {
                    StartCoroutine(TeleportAnimation(teleportTrigger.TeleportGoal));
                }
                m_CurrentPlatform++;
                m_TeleportsLeft--;
            }

            if (other.CompareTag("Deadzone"))
            {
                ResetPosition();
            }
        }