예제 #1
0
    //////////////////////////////////////////////////////////////////////
    private void UpdateTravellers()
    {
        for (int i = _trackedTravellers.Count - 1; i >= 0; --i)
        {
            PortalTraveller traveller = _trackedTravellers[i];
            if (traveller.IsInPortal)
            {
                Matrix4x4 relativeMat = _linkedPortal.transform.localToWorldMatrix * transform.worldToLocalMatrix * traveller.transform.localToWorldMatrix;
                if (traveller.HasCrossedPortal(this))
                {
                    traveller.Teleport(relativeMat.GetColumn(3), relativeMat.rotation);

                    _linkedPortal.OnTravellerApprochingPortal(traveller);
                    OnTravellerLeavingPortal(traveller);
                }
                else
                {
                    traveller.UpdateClone(relativeMat.GetColumn(3), relativeMat.rotation);
                }
            }
        }
    }