示例#1
0
    void OnTriggerEnter(Collider collider)
    {
        if (!isOn)
        {
            return;
        }
        if (collider.gameObject.name != "Head")
        {
            return;
        }

        if (collider.gameObject.tag == "Player")
        {
            GameObject     cameraRig        = GameObject.Find("/[CameraRig]");
            ParticleSystem arrivalIndicator = cameraRig.GetComponentInChildren <ParticleSystem>();
            arrivalIndicator.Play();
            TeleportPlayer(cameraRig);
        }
        else if (collider.gameObject.tag == "Clone")
        {
            Debug.Log("In clone");
            CloneController cloneCtrl = collider.gameObject.GetComponentInParent <CloneController>();
            cloneCtrl.PlayArrivalIndicator();
        }

        // play teleportation on player/clone
        teleportIndicator.time = 2;
        teleportIndicator.Play();

        if (gameController != null)
        {
            gameController.StartGame();
        }
    }
示例#2
0
    /// <summary>
    /// Function that runs after every frame.
    /// </summary>
    void Update()
    {
        CurrentFrameNumber++;
        Damaged = false;

        if (PreviousMovement != transform.position)
        {
            PreviousMovement = transform.position;
            ActionsInRound.AddAction(new PlayerMovementAction(PreviousMovement, CurrentFrameNumber));
        }

        if (PreviousRotation != transform.rotation)
        {
            PreviousRotation = transform.rotation;
            ActionsInRound.AddAction(new PlayerTurnAction(PreviousRotation, CurrentFrameNumber));
        }
        if (Input.GetMouseButtonDown(0) && isLocalPlayer)
        {
            if (FireSound != null)
            {
                FireSound.Play();
            }

            CmdShoot();

            ActionsInRound.AddAction(new PlayerShootAction(CurrentFrameNumber));
        }

        if (CurrentFrameNumber == 200)
        {
            CloneController.SetActionReader(ActionsInRound);
        }
    }
    private void ResetCount()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == true)
        {
            float remainingtime = 6 - timecount;
            Invoke("ResetCount", remainingtime);
            Debug.Log(remainingtime);
        }
        else if (cloneControllerScript.istalking == false)
        {
            if (count == 1)
            {
                qpressed  = true;
                reset     = false;
                count     = count - 1;
                timecount = 0;
                Invoke("NoMorePressed", 2.4f);
                returning = false;
                cloned    = false;
                cloned1   = false;
                cloned2   = false;
                cloned3   = false;
                cloned4   = false;
                timeslider.gameObject.SetActive(false);
                timeslider1.gameObject.SetActive(false);
                timeslider2.gameObject.SetActive(false);
                timeslider3.gameObject.SetActive(false);
                timeslider4.gameObject.SetActive(false);
            }
        }
    }
    void CheckIfQPressed()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == true)
        {
            if (player_near == true || clone_near == true)
            {
                if (Input.GetKeyDown(KeyCode.Q))
                {
                    if (qpressed1 == false)
                    {
                        clonedwithq = true;
                        qpressed1   = true;
                        currenty    = y;
                    }
                    else
                    {
                        if (charsparsing == false)
                        {
                            clonedwithq = false;
                            qpressed1   = false;
                            Debug.Log(currenty);
                            y = currenty - 1;
                            Talk();
                        }
                    }
                }
            }
        }
    }
    GameObject CreateClone(int num)
    {
        GameObject      clone     = Instantiate(clonePrefab, new Vector3(num, -40, 0), Quaternion.identity) as GameObject;
        CloneController cloneCtrl = clone.GetComponent <CloneController>();

        cloneCtrl.SetNumber(num + 1);
        return(clone);
    }
    void Talk()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        cloneControllerScript.finishedtalking = false;
        if (dialoguecompleted == false) // controlla il playerprefs per vedere se già è stato completato il primo dialogo
        {
            textimage.interactable = true;
            lines[0] = ""; // Sempre vuoto, non si visualizza
            lines[1] = "First line";
            lines[2] = "Second Line";
            lines[3] = ""; //choice
                           // lines4 dipende dalla choice
                           // lines5 salta perchè una choice sbagliata ha 2 frasi, quindi si setta y per 5 e si richiama talk()
            lines[6]  = "Good, dialogue complete";
            lines[30] = "Second route";

            y = y + 1;
            //  StartCoroutine(Dialogue());
            text.text = lines[y];


            if (y == 3)
            {
                ChoiceToMakeOne();
                textimage.gameObject.SetActive(false);
                textimage.interactable = false;
            }
            if (y == 5) //o tutte le posizioni di y in cui vi è una choice
            {
                textimage.interactable = false;
                wrongchoice            = false;
                Invoke("CloseDialogue", 1f);
            }
            if (y > 30)
            {
                Invoke("CloseDialogue", 1f);
            }
        }
        else if (dialoguecompleted == true)
        {
            textimage.interactable = true;
            lines[0] = ""; // Sempre vuoto, non si visualizza
            lines[1] = "Second dialogue";
            lines[2] = " ";
            y        = y + 1;
            //   StartCoroutine(Dialogue());
            text.text = lines[y];
            if (y == 2)
            {
                Invoke("CloseDialogue", 1f);
            }
        }
    }
示例#7
0
    void InstantiateClone()
    {
        GameObject      clone      = Instantiate(clonePrefab, null);
        CloneController controller = clone.GetComponent <CloneController>();

        controller.playTime      = Time.time;
        controller.recording     = inputRecording;
        clone.transform.position = controller.recording[0].position;

        currLoop       = clone;
        inputRecording = new List <InputAtTime>();
    }
    void Start()
    {
        offset = transform.position - player.transform.position;

        cloned    = false;
        cloned_1  = false;
        cloned_2  = false;
        cloned_3  = false;
        cloned_4  = false;
        returning = false;
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();
    }
示例#9
0
    /// <summary>
    /// Stops the clones action counter, so that it will no longer perform actions.
    /// </summary>
    /// <param name="Clone"></param>
    private void StopClone(GameObject Clone)
    {
        CloneController controller = Clone.GetComponent <CloneController>();

        if (controller != null)
        {
            controller.StopActions();
        }
        else
        {
            Debug.Log("Cannot stop clone actions for an object without a CloneController component!");
            return;
        }
    }
    void SyncQ()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.qpressed == false)
        {
            qpressed = false;
        }
        else
        {
            qpressed = true;
        }
    }
 void CheckIfQPressed()
 {
     if (returning == false && qpressed == false)
     {
         GameObject      cloneController       = GameObject.Find("Clone_Controller");
         CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();
         if (cloneControllerScript.istalking == false)
         {
             if (Input.GetKeyDown(KeyCode.Q))
             {
                 if (qpressed == false)
                 {
                     qpressed = true;
                     Invoke("NoMorePressed", 1f);
                     if (count <= 5)
                     {
                         if (countlocked == false)
                         {
                             count = count + 1;
                             if (count == 1)
                             {
                                 Invoke("Cloned", 1f);
                             }
                             else if (count == 2)
                             {
                                 Invoke("Cloned1", 1f);
                             }
                             else if (count == 3)
                             {
                                 Invoke("Cloned2", 1f);
                             }
                             else if (count == 4)
                             {
                                 Invoke("Cloned3", 1f);
                             }
                             else if (count == 5)
                             {
                                 Invoke("Cloned4", 1f);
                             }
                             else if (count > 5)
                             {
                                 count = 5;
                             }
                         }
                     }
                 }
             }
         }
     }
 }
示例#12
0
    public void ConnectRemote(GameObject clone)
    {
        CloneController cloneCtrl = clone.GetComponent <CloneController>();

        // attach left hand tracked object to clone
        cloneCtrl.AttachTrackedObject("LeftHand", srcLeftHand);
        // attach right hand tracked object to clone
        cloneCtrl.AttachTrackedObject("RightHand", srcRightHand);

        // attach left, right, and head of clone to motion recorder
        remoteLeftHand  = cloneCtrl.GetPartMotionPlayer("LeftHand");
        remoteRightHand = cloneCtrl.GetPartMotionPlayer("RightHand");
        remoteHead      = cloneCtrl.GetPartMotionPlayer("Head");
    }
示例#13
0
    /// <summary>
    /// Resets a clone to its starting position, and sets its actions counter back to frame 0.
    /// </summary>
    /// <param name="Clone"></param>
    private void ResetClone(GameObject Clone)
    {
        CloneController controller = Clone.GetComponent <CloneController>();

        if (controller != null)
        {
            controller.ResetActions();
            controller.IsDead        = false;
            controller.CurrentHealth = controller.MaxHealth;
        }
        else
        {
            Debug.Log("Cannot reset clone actions for an object without a CloneController component!");
            return;
        }
    }
        public void Init()
        {
            // setup player object
            Player = new GameObject();
            Player.AddComponent <PlayerMovement>();
            Player.AddComponent <Rigidbody2D>();
            Player.AddComponent <CharacterController2D>();
            GameObject ceilingCheckP = new GameObject();
            GameObject floorCheckP   = new GameObject();

            ceilingCheckP.transform.parent = Player.transform;
            floorCheckP.transform.parent   = Player.transform;
            Player.GetComponent <CharacterController2D>().GroundCheck  = floorCheckP.transform;
            Player.GetComponent <CharacterController2D>().CeilingCheck = ceilingCheckP.transform;
            Player.GetComponent <PlayerMovement>().controller          = Player.GetComponent <CharacterController2D>();

            pArrow = new GameObject("pArrow");
            pArrow.transform.parent = Player.transform;

            // setup clone object
            Clone = new GameObject();
            Clone.AddComponent <PlayerMovement>();
            Clone.AddComponent <Rigidbody2D>();
            Clone.AddComponent <CharacterController2D>();
            GameObject ceilingCheckC = new GameObject();
            GameObject floorCheckC   = new GameObject();

            ceilingCheckC.transform.parent = Clone.transform;
            floorCheckC.transform.parent   = Clone.transform;
            Clone.GetComponent <CharacterController2D>().GroundCheck  = floorCheckC.transform;
            Clone.GetComponent <CharacterController2D>().CeilingCheck = ceilingCheckC.transform;
            Clone.GetComponent <PlayerMovement>().controller          = Clone.GetComponent <CharacterController2D>();

            cArrow = new GameObject("cArrow");
            cArrow.transform.parent = Clone.transform;

            // setup clone controller
            GameObject cloneController = new GameObject();

            cloneController.AddComponent <CloneController>();
            cc             = cloneController.GetComponent <CloneController>();
            cc.cloneArrow  = cArrow;
            cc.playerArrow = pArrow;

            cc.clone  = Clone;
            cc.player = Player;
        }
示例#15
0
    void ResetWorld()
    {
        foreach (GameObject clone in this.clones)
        {
            CloneController cloneCtrl = clone.GetComponent <CloneController>();
            cloneCtrl.RewindPlayback();
        }

        foreach (GameObject gameObj in GameObject.FindGameObjectsWithTag("Dynamic"))
        {
            Resettable resettableObj = gameObj.GetComponent <Resettable>();
            if (resettableObj == null)
            {
                continue;
            }
            resettableObj.ResetState();
        }
    }
 void CheckIfQPressed()
 {
     if (qpressed == false)
     {
         if (returning == false)
         {
             GameObject      cloneController       = GameObject.Find("Clone_Controller");
             CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();
             if (cloneControllerScript.istalking == false)
             {
                 if (Input.GetKeyDown(KeyCode.Q))
                 {
                     qpressed = true;
                     Invoke("NoMorePressed", 1f);
                     count = count + 1;
                 }
             }
         }
     }
 }
    void Returning()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == false)
        {
            if (count == 1 && cloned == true)
            {
                Vector3 new_pos_1;
                new_pos_1          = player.transform.position + offset;
                transform.position = new_pos_1;
                cloned             = false;
                qpressed           = true;
                count = count - 1;
                Invoke("ReturnBools", 2f);
                Invoke("NoMorePressed", 2.3f);
            }
        }
    }
    void Returning4()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == false)
        {
            if (count == 5 && cloned_4 == true)
            {
                Vector3 new_pos_1;
                new_pos_1          = target3.transform.position + offset;
                transform.position = new_pos_1;
                cloned_4           = false;
                count       = count - 1;
                returning   = true;
                countlocked = true;
                qpressed    = true;
                Invoke("Returning3", 0.5f);
            }
        }
    }
示例#19
0
    /// <summary>
    /// Creates a new clone object at the specified starting position, that will use the passed in actions
    /// </summary>
    /// <param name="StartingPosition"></param>
    /// <param name="ActionReader"></param>
    /// <returns></returns>
    private GameObject CreateClone(Vector3 StartingPosition, PlayersActionsInRound ActionReader, Teams Team)
    {
        if (ActionReader == null)
        {
            Debug.Log("Cannot pass in a null starting position or action reader when creating a clone");
            return(null);
        }

        if (ClonePrefab == null)
        {
            Debug.Log("Must set the clone prefab before creating a clone");
            return(null);
        }

        GameObject Clone = (GameObject)Instantiate(ClonePrefab);

        CloneController Controller = Clone.GetComponent <CloneController>();

        if (Controller == null)
        {
            Debug.Log("Cannot create a clone instance using a prefab that doesn't have the clone controller component!");
            return(null);
        }

        Controller.SetStartingPosition(StartingPosition);
        Controller.SetActionReader(ActionReader);
        if (BoundsCheck != null)
        {
            Controller.SetBoundsCheck(BoundsCheck.GetComponent <Collider>());
        }
        else
        {
            Debug.Log("RoundManager doesn't have a set bounds check!");
        }

        Controller.Team = Team;
        Controller.RpcSetGlow(Team);

        return(Clone);
    }
    void CloseDialogue()
    {
        if (clonedwithq == false && clonedtalking == false)
        {
            dialoguecompleted = true;
        }
        Debug.Log(dialoguecompleted);
        epressed = false;
        textimage.gameObject.SetActive(false);
        y = 0;
        Debug.Log(y);
        textimage.interactable = false;
        clonedwithq            = false;
        qpressed1 = false;
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        cloneControllerScript.istalking       = false;
        cloneControllerScript.finishedtalking = true;
        clone_near = false;
        if (clonedtalking == true)
        {
            clonedtalking = false;
            GameObject clone = GameObject.FindGameObjectWithTag("Player_Clone");
            if (cloneControllerScript.cloned == true)
            {
                SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                cloneScript.canWalk = true;
            }
        }
        else
        {
            GameObject             player       = GameObject.Find("Player");
            SimpleCharacterControl playerScript = player.GetComponent <SimpleCharacterControl>();
            playerScript.canWalk = true;
        }

        //checka se è un clone o il player e canWalk torna true, fare tutto su close dialogue, if y > x invoke CloseDialogue
    }
    private void ResetCount4()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == true)
        {
            float remainingtime = 6 - timecount4;
            Invoke("ResetCount4", remainingtime);
        }
        if (cloneControllerScript.istalking == false)
        {
            if (count == 5)
            {
                returning  = true;
                qpressed   = true;
                reset4     = false;
                count      = count - 1;
                timecount4 = 0;
                Invoke("ResetCount3", 0.5f);
            }
        }
    }
示例#22
0
    IEnumerator Spawner()
    {
        do
        {
            yield return(WaitForFramesInSeconds(initialDelay - animationDelay));
        } while (!waitForFramesDone);

        while (true)
        {
            cloneMachineAnim.SetTrigger("Spawn");
            do
            {
                yield return(WaitForFramesInSeconds(animationDelay));
            } while (!waitForFramesDone);


            controller.SetRunning(true);

            GameObject clone = Instantiate(obj);
            clone.transform.position = spawnPoint.transform.position;
            CloneController cloneController = clone.GetComponent <CloneController>();
            cloneController.frameOffset        = controller.GetCurrentFrame();
            cloneController.destroyOnCollision = destroyOnCollision;
            cloneController.SetController(controller);

            if (camController != null && camController.TransformToFollow == null)
            {
                camController.TransformToFollow = clone.transform;
            }

            do
            {
                yield return(WaitForFramesInSeconds(secondDelay - animationDelay));
            } while (!waitForFramesDone);
        }
    }
示例#23
0
    //public float turningspeed = 5;

    //CloneController cloneController;
    //// Start is called before the first frame update
    void Start()
    {
        player = GameObject.Find("Player").transform.Find("PlayerTurning").gameObject;
        //player = GameManager.Instance.player.transform.Find("PlayerTurning").gameObject; ;
        cloneController = transform.parent.GetComponent <CloneController>();
    }
    void Count()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.istalking == false)
        {
            if (returning == false)
            {
                /*      if (count == 0)
                 * {
                 *    time.text = "";
                 *    time1.text = "";
                 *    time2.text = "";
                 *    time3.text = "";
                 *    time4.text = "";
                 * }*/

                if (count == 1)
                {
                    if (cloned == false)
                    {
                        timecount = timecount + Time.deltaTime;
                        // time.text = "Time 1st Clone: " + timecount + "";
                        currenttime = timecount;
                        timeslider.gameObject.SetActive(true);
                        timeslider.value = timecount;
                        if (reset == false)
                        {
                            Invoke("ResetCount", 6f);
                        }
                        reset = true;
                    }
                }
                else if (count == 2)
                {
                    cloned = true;
                    if (cloned1 == false)
                    {
                        timecount1 = timecount1 + Time.deltaTime;
                        //   time1.text = "Time 2nd Clone: " + timecount1 + "";
                        currenttime1 = timecount;
                        timeslider1.gameObject.SetActive(true);
                        timeslider1.value = timecount1;
                        if (reset1 == false)
                        {
                            Invoke("ResetCount1", 6f);
                        }
                        reset1 = true;
                    }
                }
                else if (count == 3)
                {
                    cloned1 = true;
                    if (cloned2 == false)
                    {
                        timecount2 = timecount2 + Time.deltaTime;
                        //   time2.text = "Time 3rd Clone: " + timecount2;
                        currenttime2 = timecount;
                        timeslider2.gameObject.SetActive(true);
                        timeslider2.value = timecount2;
                        if (reset2 == false)
                        {
                            Invoke("ResetCount2", 6f);
                        }
                        reset2 = true;
                    }
                }
                else if (count == 4)
                {
                    cloned2 = true;
                    if (cloned3 == false)
                    {
                        timecount3 = timecount3 + Time.deltaTime;
                        //    time3.text = "Time 4th Clone: " + timecount3;
                        currenttime3 = timecount;
                        timeslider3.gameObject.SetActive(true);
                        timeslider3.value = timecount3;
                        if (reset3 == false)
                        {
                            Invoke("ResetCount3", 6f);
                        }
                        reset3 = true;
                    }
                }
                else if (count == 5)
                {
                    cloned3 = true;
                    if (cloned4 == false)
                    {
                        timecount4 = timecount4 + Time.deltaTime;
                        //    time4.text = "Time 5th Clone: " + timecount4;
                        currenttime4 = timecount;
                        timeslider4.gameObject.SetActive(true);
                        timeslider4.value = timecount4;
                        if (reset4 == false)
                        {
                            Invoke("ResetCount4", 6f);
                        }
                        reset4 = true;
                    }
                }
            }
        }
        if (count > 5)
        {
            count = 5;
        }
    }
    void FinishedTalking()
    {
        GameObject      cloneController       = GameObject.Find("Clone_Controller");
        CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();

        if (cloneControllerScript.finishedtalking == true)
        {
            GameObject     timeController       = GameObject.Find("TimeController");
            TimeController timeControllerScript = timeController.GetComponent <TimeController>();
            if (count == 1 && cloned == true)
            {
                if (returncalledtalk == false)
                {
                    //   cloneControllerScript.finishedtalking = false;
                    timecount  = timeControllerScript.currenttime;
                    returntime = 5.3f - timecount;
                    Invoke("Returning", returntime);
                }
                returncalledtalk = true;
            }
            else if (count == 2 && cloned_1 == true)
            {
                if (returncalledtalk1 == false)
                {
                    //   cloneControllerScript.finishedtalking = false;
                    timecount1  = timeControllerScript.currenttime1;
                    returntime1 = 5.3f - timecount1;
                    Invoke("Returning1", returntime1);
                }
                returncalledtalk1 = true;
            }
            else if (count == 3 && cloned_2 == true)
            {
                if (returncalledtalk2 == false)
                {
                    //      cloneControllerScript.finishedtalking = false;
                    timecount2  = timeControllerScript.currenttime2;
                    returntime2 = 5.3f - timecount2;
                    Invoke("Returning2", returntime2);
                }
                returncalledtalk2 = true;
            }
            else if (count == 4 && cloned_3 == true)
            {
                if (returncalledtalk3 == false)
                {
                    //  cloneControllerScript.finishedtalking = false;
                    timecount3  = timeControllerScript.currenttime3;
                    returntime3 = 5.3f - timecount3;
                    Invoke("Returning3", returntime3);
                }
                returncalledtalk3 = true;
            }
            else if (count == 5 && cloned_4 == true)
            {
                if (returncalledtalk4 == false)
                {
                    //    cloneControllerScript.finishedtalking = false;
                    timecount4  = timeControllerScript.currenttime4;
                    returntime4 = 5.3f - timecount4;
                    Invoke("Returning4", returntime4);
                }
                returncalledtalk4 = true;
            }
        }
    }
    void CheckIfCloned()
    {
        if (count == 0)
        {
            transform.position = player.transform.position + offset;
        }
        if (returning == false)
        {
            GameObject      cloneController       = GameObject.Find("Clone_Controller");
            CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();
            if (cloneControllerScript.istalking == false)
            {
                if (count == 1 && cloned == true)
                {
                    if (GameObject.Find("Player_Clone") != null)
                    {
                        target = GameObject.Find("Player_Clone").transform;
                        Vector3 new_pos;
                        new_pos            = target.transform.position + offset;
                        transform.position = new_pos;
                    }

                    if (returncalled == false)
                    {
                        Invoke("Returning", 5f);
                    }
                    returncalled = true;
                }
                else if (count == 2 && cloned_1 == true)
                {
                    if (GameObject.Find("Player_Clone_1") != null)
                    {
                        target1 = GameObject.Find("Player_Clone_1").transform;
                        Vector3 new_pos_1;
                        new_pos_1          = target1.transform.position + offset;
                        transform.position = new_pos_1;
                    }

                    if (returncalled1 == false)
                    {
                        Invoke("Returning1", 5f);
                    }
                    returncalled1 = true;
                }
                else if (count == 3 && cloned_2 == true)
                {
                    if (GameObject.Find("Player_Clone_2") != null)
                    {
                        target2 = GameObject.Find("Player_Clone_2").transform;
                        Vector3 new_pos_1;
                        new_pos_1          = target2.transform.position + offset;
                        transform.position = new_pos_1;
                    }

                    if (returncalled2 == false)
                    {
                        Invoke("Returning2", 5f);
                    }
                    returncalled2 = true;
                }
                else if (count == 4 && cloned_3 == true)
                {
                    if (GameObject.Find("Player_Clone_3") != null)
                    {
                        target3 = GameObject.Find("Player_Clone_3").transform;
                        Vector3 new_pos_1;
                        new_pos_1          = target3.transform.position + offset;
                        transform.position = new_pos_1;
                    }


                    if (returncalled3 == false)
                    {
                        Invoke("Returning3", 5f);
                    }
                    returncalled3 = true;
                }
                else if (count == 5 && cloned_4 == true)
                {
                    if (GameObject.Find("Player_Clone_4") != null)
                    {
                        target4 = GameObject.Find("Player_Clone_4").transform;
                        Vector3 new_pos_1;
                        new_pos_1          = target4.transform.position + offset;
                        transform.position = new_pos_1;
                    }

                    if (returncalled4 == false)
                    {
                        Invoke("Returning4", 5f);
                    }
                    returncalled4 = true;
                }
            }
        }
    }
 void CheckIfEPressed()
 {
     if (epressed == false)
     {
         if (player_near == true || clone_near == true)
         {
             if (Input.GetKeyDown(KeyCode.E))
             {
                 epressed = true;
                 GameObject      cloneController       = GameObject.Find("Clone_Controller");
                 CloneController cloneControllerScript = cloneController.GetComponent <CloneController>();
                 bool            checkclone            = cloneControllerScript.cloned;
                 if (player_near == true && clone_near == false && checkclone == false)
                 {
                     GameObject             player       = GameObject.Find("Player");
                     SimpleCharacterControl playerScript = player.GetComponent <SimpleCharacterControl>();
                     playerScript.canWalk            = false;
                     cloneControllerScript.istalking = true;
                     StartDialoguePlayer();
                 }
                 else if (player_near == false && clone_near == true)
                 {
                     if (cloneControllerScript.cloned == true && cloneControllerScript.cloned1 == false)
                     {
                         GameObject             clone       = GameObject.Find("Player_Clone");
                         SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                         cloneScript.canWalk             = false;
                         cloneControllerScript.istalking = true;
                     }
                     else if (cloneControllerScript.cloned == true && cloneControllerScript.cloned1 == true && cloneControllerScript.cloned2 == false)
                     {
                         GameObject             clone       = GameObject.Find("Player_Clone_1");
                         SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                         cloneScript.canWalk             = false;
                         cloneControllerScript.istalking = true;
                     }
                     else if (cloneControllerScript.cloned == true && cloneControllerScript.cloned1 == true && cloneControllerScript.cloned2 == true && cloneControllerScript.cloned3 == false)
                     {
                         GameObject             clone       = GameObject.Find("Player_Clone_2");
                         SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                         cloneScript.canWalk             = false;
                         cloneControllerScript.istalking = true;
                     }
                     else if (cloneControllerScript.cloned == true && cloneControllerScript.cloned1 == true && cloneControllerScript.cloned2 == true && cloneControllerScript.cloned3 == true && cloneControllerScript.cloned4 == false)
                     {
                         GameObject             clone       = GameObject.Find("Player_Clone_3");
                         SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                         cloneScript.canWalk             = false;
                         cloneControllerScript.istalking = true;
                     }
                     else
                     {
                         GameObject             clone       = GameObject.Find("Player_Clone_4");
                         SimpleCharacterControl cloneScript = clone.GetComponent <SimpleCharacterControl>();
                         cloneScript.canWalk             = false;
                         cloneControllerScript.istalking = true;
                     }
                     StartDialogueClone();
                 }
                 else if (player_near == true && clone_near == true)
                 {
                     Debug.Log("You can't both start a dialogue with the same npc");
                 }
                 Talk();
             }
         }
     }
 }