コード例 #1
0
    void FixedUpdate()
    {
        //Get all collissions with the portal
        int hitCount = teleportCol.GetContacts(colliderHits);

        for (int i = 0; i < hitCount; i++)
        {
            Transform  hitTransform = colliderHits[i].transform;
            Collider2D hitCollider  = colliderHits[i];

            (Sign enter, Sign exit)side;
            side.enter = GetSignSide(hitTransform.position);

            //One way is on and
            if (oneWay && side.enter == (flipSide?-1:1))
            {
                EssentialFuncs.IgnoreCollision(hitCollider, teleportCol);
                break;
            }

            //Create a copy of the enterer
            GameObject mirrorCopy = InstantiateAMirrorCopy(hitCollider);

            void Teleport()
            {
                side.exit = GetSignSide(hitTransform.position);
                if (side.enter != side.exit)
                {
                    hitTransform.position = mirrorCopy.transform.position;
                }

                Destroy(mirrorCopy);
                EssentialFuncs.IgnoreCollision(hitCollider, link.teleportCol);
            }

            IEnumerator ICRoutine = EssentialFuncs.IgnoreCollisionRoutine(teleportCol, colliderHits[i]);
            ICRoutine.AddEvents(Teleport);
        }
    }