void OnTriggerEnter(Collider collider) { // allowed target enters the trigger if (collider.tag.Equals("Mario")) { // get the target and its ITeleportable script target = collider.transform; teleportable = (ITeleportable)target.GetComponent(typeof(ITeleportable)); // checks if teleportable isn't valid if (teleportable == null) { target = null; return; } // set intial status teleportable.setOnTeleportPlace(true); teleportable.setDirEntrance(getDirEntrance()); // if the player was teleporting then start the fade out transition if (teleportable.isTeleporting()) { fader.startFading(EnumFadeDirection.FADE_OUT); } } }
private void OnTriggerEnter(Collider collider) { ITeleportable teleportable = collider.GetComponent <ITeleportable>(); if (teleportable != null && OnEntered != null) { OnEntered(teleportable); } }
private IEnumerator ReenableTeleportation(ITeleportable teleportable) { var fixedUpdateWaiter = new WaitForFixedUpdate(); yield return(fixedUpdateWaiter); // during this physics update, the object entered and exited the first teleporter collider yield return(fixedUpdateWaiter); // during this one, the object may have entered the teleporter collider of the opposing teleporter teleportable.CanBeTeleported = true; }
private bool Receive(ITeleportable teleportable) { if (teleportable == null) { return(false); } Debug.Log("Teleport::Receive>> Teleportable", this); teleportable.TeleportTo(this); return(true); }
protected override bool?OnCollision2(int pDamage, Player pOwner, GameObject pOrigin) { //if teleport collides with teleportable object, dont destroy it. //it will be handled in TeleportTo method of individual objects ITeleportable teleportableObject = pOrigin.GetComponent <ITeleportable>(); if (teleportableObject != null) { return(false); } return(base.OnCollision2(pDamage, pOwner, pOrigin)); }
private void OnTriggerEnter(Collider other) { ITeleportable teleportable = other.gameObject.GetComponent <ITeleportable>(); if (teleportable != null) { teleportable.Teleport(connectedObjectPosition); } else { Debug.Log("No ITeleportable!"); } }
private void OnTriggerEnter2D(Collider2D collision) { //Debug.Log("OnTriggerEnter2D " + collision.gameObject.name); ITeleportable teleportableObject = collision.GetComponent <ITeleportable>(); if (teleportableObject != null) { if (teleportedObjects.Contains(teleportableObject)) { //Debug.Log("This object was teleported here recently"); return; } ITeleportable teleportedObject = teleportableObject.TeleportTo(linkedTeleport); if (teleportedObject != null) { linkedTeleport.OnTeleported(teleportedObject); } } }
private void Update() { for (int i = 0; i < teleportableObjectsNearby.Count; i++) { ITeleportable teleportable = teleportableObjectsNearby[i]; float distance = teleportable.GetDistance(m_Transform.position); if (connectedPortals.Count > 0 && distance < teleportDistance) { connectedPortals[Random.Range(0, connectedPortals.Count)].Teleport(teleportable); } else { float scale = (distance - teleportDistance) / shrinkingDistance; teleportable.UpdateScale(scale); } } }
//List<GameObject> teleportedObjects = new List<GameObject>(); private void OnTeleported(ITeleportable pObject) { teleportedObjects.Add(pObject); DoInTime(() => teleportedObjects.Remove(pObject), 1); }
private void OnTriggerExited(ITeleportable teleportable) { teleportable.UpdateScale(1f); teleportableObjectsNearby.Remove(teleportable); }
private void OnTriggerEntered(ITeleportable teleportable) { teleportableObjectsNearby.Add(teleportable); }
public void Teleport(ITeleportable teleportable) { teleportable.MoveTo(releaseTransform); }