Ejemplo n.º 1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        for (int i = 0; i < travellers.Count; i++)
        {
            PortalTravllerScript pt = travellers[i];
            Transform            t  = pt.transform;

            Vector3 offset = t.position - transform.position;

            int sideOfPortal     = (int)Mathf.Sign(Vector3.Dot(offset, transform.forward));
            int prevSideOfPortal = (int)Mathf.Sign(Vector3.Dot(pt.prevOffset, transform.forward));

            if (sideOfPortal != prevSideOfPortal)
            {
                var m = linkedPortal.transform.localToWorldMatrix * transform.worldToLocalMatrix * player.transform.localToWorldMatrix;
                pt.Teleport(transform, linkedPortal.transform);
                travellers.RemoveAt(i);

                Debug.Log("Crossed");

                break;
            }


            pt.prevOffset = offset;
        }
    }
Ejemplo n.º 2
0
 void OnEnityEnter(PortalTravllerScript traveller)
 {
     if (!travellers.Contains(traveller))
     {
         traveller.EnterPortalThreshhold();
         traveller.prevOffset = traveller.transform.position - transform.position;
         travellers.Add(traveller);
     }
 }