Exemplo n.º 1
0
// Enter
    public void EnterInteriorDimension()
    {
        if (Character.InInteriorDimension)
        {
            return;
        }

        Character.InInteriorDimension = true;

        // Create interior dimension
        colDimScript.interiorDimTransform = Instantiate(colDimScript.interiorDimGameObject, Vector3.zero, colDimScript.transform.rotation).transform;
        colDimScript.interiorDimTransform.GetComponent <FollowRotation>().obj = colDimScript.transform;   // <- follow rotation pitäis saaha toimimaan ilman että ukon liikkuminen jumittaa
        colDimScript.interiorDimTransform.rotation = colDimScript.transform.rotation;

        // Real dimension character setup
        realDimensionCharacter = new GameObject("CharacterRealDimension");
        realDimensionCharacter.transform.localScale = transform.localScale;
        realDimensionCharacter.transform.position   = transform.position;
        realDimensionCharacter.transform.rotation   = transform.rotation;
        realDimensionCharacter.AddComponent <FollowRotation>().obj = transform;
        realDimensionCharacter.AddComponent <InteriorDimensionExitMonitoring>();
        CapsuleCollider capCol = realDimensionCharacter.AddComponent <CapsuleCollider>();

        Other.CopyComponent(transform.GetComponent <CapsuleCollider>(), capCol);
        capCol.isTrigger = true;
        // follow relative position
        FollowPositionRelativeToObject fprto = realDimensionCharacter.AddComponent <FollowPositionRelativeToObject>();

        fprto.sourceParentObject      = colDimScript.interiorDimTransform;
        fprto.destinationParentObject = colDimScript.transform;
        fprto.sourceTransform         = transform;
        // cameras
        Vector3   locPos      = camerasT.localPosition;
        Transform realDimCams = new GameObject("Cameras").transform;

        realDimCams.parent        = realDimensionCharacter.transform;
        realDimCams.localPosition = locPos;
        realDimCams.rotation      = camerasT.rotation;
        realDimCams.gameObject.AddComponent <FollowRotation>().obj      = camerasT;
        realDimCams.gameObject.AddComponent <FollowLocalPosition>().obj = camerasT;
        camerasT.Find("Camera").parent    = realDimCams;
        camerasT.Find("FarCamera").parent = realDimCams;
        // pippeli
        locPos = Character.Pippeli.transform.localPosition;
        Character.Pippeli.transform.parent        = realDimensionCharacter.transform;
        Character.Pippeli.transform.localPosition = locPos;

        // Set character position inside collision dimension
        transform.position = transform.position - colDimScript.transform.position + colDimScript.posDifference;
        movementScr.oldPos = transform.position;
        gameObject.layer   = 16; // layer to "CollisionDimension" layer


        // gravity body script
        gravityBodyScr.transform = realDimensionCharacter.transform;

        // background star particles to follow real dimension character
        //bgstarsFollowObjScr.obj = realDimensionCharacter.transform;
    }