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; } } }
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; }
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); } }
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(); } }