Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        if (objectType == 1)
        {
            if (pnjScript.GetItemTrigger() == true)
            {
                functions.AddItem(idElement, quantity);

                pnjScript.SetItemTrigger(false);
                pnjScript.SetItemGiven(true);
            }
        }
        else
        {
            //Si l'objet est visible
            if (this.GetComponent <MeshRenderer>().enabled == true)
            {
                playerPosition     = GameObject.Find("Tempus").transform.position;
                distanceItemPlayer = functions.DistanceBetween(playerPosition, itemPosition);
                //Si le joueur est proche de l'objet
                if (distanceItemPlayer.x < hitBoxDistance && distanceItemPlayer.y < hitBoxDistance && distanceItemPlayer.z < hitBoxDistance)
                {
                    playerDetected = true;
                    this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = true;
                    if (Input.GetKeyDown(KeyCode.Return) || mouseTrigger == true)
                    {
                        mouseTrigger = false;
                        //Le Mesh renderer de l’objet 3d est désactivé
                        this.GetComponent <MeshRenderer>().enabled = false;
                        this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = false;
                        //On ajoute l'objet à l'invenaire du joueur et on le lui signal dans la fen^tre de dialogue centrale
                        functions.AddItem(idElement, quantity);
                        functions.SetCentralWindow(true, "Received " + quantity + " " + linkedItem.GetComponent <ItemOld>().GetName());
                        functions.SetDialogueMode(true);
                    }
                }
                else
                {
                    this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = false;
                }
            }            //Si le mode dialogue est activé ici, cela signifie que le joueur vient de recevoir un objet et le jeu attend simplement que le joueur ferme la fenêtre centrale
            else if (functions.GetDialogueMode() == true)
            {
                if (Input.GetKeyDown(KeyCode.Return) || Input.GetMouseButtonDown(0) == true)
                {
                    functions.SetCentralWindow(false);
                    functions.SetDialogueMode(false);
                }
            }
        }
    }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        menuCurrentPosition     = mainMenu.position;
        menuCurrentSize         = mainMenu.localScale;
        underMenuImage.rotation = Quaternion.Euler(0, 0, BGrotation);

        //Fait simplement tourner l'arrière plan du sous-menu
        if (BGrotation >= 360)
        {
            BGrotation = 0;
        }
        else
        {
            BGrotation = BGrotation + rotationSpeed;
        }

        if (functions.GetDialogueMode() == false)
        {
            //Grace a la touche Escape, on peut ouvrir et fermer le menu principal et également fermer les sous-menus
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                //On vérifie tout d'abord si un menu est ouvert ou non
                if (menuOpened == true)                //si oui, s'agit-il du menu principal ou non
                {
                    if (idUnderMenu == 0)              //S'il s'agit du menu principal, on le ferme tout simplement
                    {
                        menuOpened = false;
                        functions.SetPauseMode(false);
                        idMenuAnimation = 2;
                    }
                    else                     //S'il s'agit d'un sous-menu, on le ferme et on revient au menu principal
                    {
                        idMenuAnimation = 4;
                        idUnderMenu     = 0;
                    }
                }
                else                 //Sinon on ouvre simplement le menu principal
                {
                    menuOpened = true;
                    mainMenu.gameObject.SetActive(menuOpened);
                    functions.SetPauseMode(true);
                    idMenuAnimation = 1;
                }
            }
        }

        //Animations d'ouverture et de fermeture du menu principal et des sous-menus (4 animations en tout)
        if (idMenuAnimation == 1)        //Ouverture du menu principal

        {
            BGrotation       = -90;
            screenCenter     = new Vector3(Screen.width / 2, Screen.height / 2, 0);
            mainMenuPosition = new Vector3(menuStartPosition.x, screenCenter.y, menuStartPosition.z);            //Position exacte du menu principal calculée automatiquement d'après la taille de l'écran

            functions.MoveAt(mainMenu, mainMenuPosition, menuSpeed);

            if (menuCurrentPosition.y == mainMenuPosition.y && menuCurrentPosition.x == mainMenuPosition.x)
            {
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 2)        //Fermeture du menu principal

        {
            functions.MoveAt(mainMenu, menuStartPosition, menuSpeed);

            if (menuCurrentPosition.y == menuStartPosition.y && menuCurrentPosition.x == menuStartPosition.x)
            {
                menuOpened = false;
                mainMenu.gameObject.SetActive(menuOpened);
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 3)                                                                                                                          //Ouverture d'un sous-menu
        {
            underMenuPosition = new Vector3(mainMenuPosition.x + (Screen.width / 5.0f), mainMenuPosition.y, mainMenuPosition.z);                                //Position exacte du sous-menu calculée automatiquement d'après la taille de l'écran
            if (underMenuPosition.x != menuCurrentPosition.x || underMenuPosition.y != menuCurrentPosition.y || menuCurrentSize.x < menuStartSize.x + zoomMenu) //Si les positions X et Y actuelles du menu ne sont pas les mêmes que les positions X et Y du sous-menu
            {
                functions.MoveAt(mainMenu, underMenuPosition, menuSpeed);
                functions.Scaling(mainMenu, zoomSpeed, zoomMenu, zoomMenu);
            }
            else
            {
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 4)        //Fermeture d'un sous-menu
        {
            float dezoomMenu = zoomMenu * -1;
            if (menuCurrentPosition.x != mainMenuPosition.x || menuCurrentPosition.y != mainMenuPosition.y || menuCurrentSize.x > menuStartSize.x)
            {
                functions.MoveAt(mainMenu, mainMenuPosition, menuSpeed);
                functions.Scaling(mainMenu, zoomSpeed, dezoomMenu, dezoomMenu);
            }
            else
            {
                idMenuAnimation = 0;
            }
        }

        if (idUnderMenu == 1)
        {
            //Debug.Log("Magic menu activated!");
        }
        else if (idUnderMenu == 2)
        {
            inventory.gameObject.SetActive(true);
            //Debug.Log("Inventory menu activated!");
        }
        else if (idUnderMenu == 3)
        {
            //Debug.Log("Equipment menu activated!");
        }
        else if (idUnderMenu == 4)
        {
            //Debug.Log("Tactics menu activated!");
        }
        else if (idUnderMenu == 5)
        {
            //Debug.Log("Save menu activated!");
        }
        else if (idUnderMenu == 6)
        {
            //Debug.Log("Options menu activated!");
        }
        else if (idUnderMenu == 7)
        {
            //Debug.Log("Status menu activated!");
        }
        else
        {
            inventory.gameObject.SetActive(false);
        }

        //Active ou désactive la fenêtre de dialogue
        if (activeDialogue == 1)
        {
            dialogue.GetChild(0).gameObject.SetActive(true);
        }
        else if (activeDialogue == 2)
        {
            dialogue.GetChild(1).gameObject.SetActive(true);
        }
        else
        {
            dialogue.GetChild(0).gameObject.SetActive(false);
            dialogue.GetChild(1).gameObject.SetActive(false);
        }

        //Active ou désactive la fenêtre de réponse du personnage
        if (answerWindow == 1)
        {
            dialogue.GetChild(2).gameObject.SetActive(true);
        }
        else if (answerWindow == 2)
        {
            dialogue.GetChild(3).gameObject.SetActive(true);
        }
        else
        {
            dialogue.GetChild(2).gameObject.SetActive(false);
            dialogue.GetChild(3).gameObject.SetActive(false);
        }
    }
Beispiel #3
0
    // Update is called once per frame
    void Update()
    {
        if (functions.GetPauseMode() == false)
        {
            pnjPosition       = this.transform.position;
            playerPosition    = GameObject.Find("Tempus").transform.position;
            distancePnjPlayer = functions.DistanceBetween(playerPosition, pnjPosition);

            //Si le joueur est proche du PNJ
            if (distancePnjPlayer.x < hitBoxDistance && distancePnjPlayer.y < hitBoxDistance && distancePnjPlayer.z < hitBoxDistance)
            {
                if (sendDetection == true)
                {
                    functions.playerDetection(this.name);
                    sendDetection = false;
                }
                if (functions.CheckIfNearest(this.name) == true)
                {
                    this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = true;
                    //Debug.Log(functions.GetDialogueMode());

                    if (Input.GetKeyDown(KeyCode.Return) || mouseTrigger == true)
                    {
                        activateDialogue = true;
                    }
                    else if (functions.GetDialogueMode() == true && Input.GetMouseButtonDown(0) == true)
                    {
                        activateDialogue = true;
                    }

                    if (activateDialogue == true && itemTrigger == false)
                    {
                        activateDialogue = false;
                        mouseTrigger     = false;
                        //Debug.Log(functions.GetFrame());
                        if (functions.GetDialogueMode() == false)
                        {
                            functions.SetDialogueMode(true);
                        }

                        if (characterType == 1)                        //Si le type de ce personnage est 1, le personnage dit entre 1 et plusieurs phrases puis donne quelque chose au héro et enfin dit entre 1 et plusieurs phrases pour conclure la conversation
                        {
                            if (eventTriggered == false)
                            {
                                if (dialogProgression < partitions[0] + partitions[1])
                                {
                                    if (dialogProgression < partitions[0])                                    //Le PNJ dit quelque chose
                                    {
                                        if (faceId == 0)
                                        {
                                            screenManager.GetComponent <ScreenManager>().SetActiveDialogue(2);
                                            noFaceWindow.gameObject.SetActive(true);
                                            noFaceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                            noFaceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                        }
                                        else
                                        {
                                            screenManager.GetComponent <ScreenManager>().SetActiveDialogue(1);
                                            faceWindow.gameObject.SetActive(true);
                                            faceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                            faceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                        }
                                        dialogProgression++;
                                    }
                                    else                                     //Le PNJ donne un objet
                                    {
                                        if (itemGiven == false)
                                        {
                                            itemTrigger = true;
                                            screenManager.GetComponent <ScreenManager>().SetActiveDialogue(0);
                                        }
                                        else                                         //Le PNJ dit quelque chose
                                        {
                                            if (dialogProgression < partitions[0] + partitions[1])
                                            {
                                                if (faceId == 0)
                                                {
                                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(2);
                                                    noFaceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                                }
                                                else
                                                {
                                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(1);
                                                    faceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                                }
                                                dialogProgression++;
                                            }
                                        }
                                    }
                                }
                                else                                 //Fin de conversation
                                {
                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(0);
                                    if (faceId == 0)
                                    {
                                        noFaceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                        noFaceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                    }
                                    else
                                    {
                                        faceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                        faceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                    }
                                    functions.SetNoLoop(true);
                                    functions.SetDialogueMode(false);
                                    eventTriggered = true;
                                }
                            }
                            else                             //Le PNJ dit quelque chose
                            {
                                if (dialogProgression < partitions[0] + partitions[1] + partitions[2])
                                {
                                    if (faceId == 0)
                                    {
                                        screenManager.GetComponent <ScreenManager>().SetActiveDialogue(2);
                                        noFaceWindow.gameObject.SetActive(true);
                                        noFaceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                        noFaceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                    }
                                    else
                                    {
                                        screenManager.GetComponent <ScreenManager>().SetActiveDialogue(1);
                                        faceWindow.gameObject.SetActive(true);
                                        faceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                        faceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                    }
                                    dialogProgression++;
                                }
                                else                                 //Fin de conversation
                                {
                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(0);
                                    if (faceId == 0)
                                    {
                                        noFaceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                        noFaceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                    }
                                    else
                                    {
                                        faceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                        faceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                    }
                                    functions.SetNoLoop(true);
                                    functions.SetDialogueMode(false);
                                    dialogProgression = partitions[0] + partitions[1];
                                }
                            }
                        }
                        else if (characterType == 2)                        //Si le type de ce personnage est 2, le personnage pose une question (en 1 ou plusieurs phrases) puis attend la réponse du joueur. Enfin, selon la réponse, il dit quelques phrases et ne fait plus rien.

                        {
                        }
                        else                         //Si le type de ce personnage est 0 ou autre, le personnage dit entre 1 et plusieurs phrases puis ne fait plus rien
                        {
                            if (dialogProgression < partitions[0])
                            {
                                if (faceId == 0)
                                {
                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(2);
                                    noFaceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                    noFaceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                }
                                else
                                {
                                    screenManager.GetComponent <ScreenManager>().SetActiveDialogue(1);
                                    faceWindow.GetChild(0).GetComponent <Text>().text = this.name;
                                    faceWindow.GetChild(1).GetComponent <Text>().text = dialogList[dialogProgression];
                                }
                                dialogProgression++;
                            }
                            else                             //Fin de conversation
                            {
                                screenManager.GetComponent <ScreenManager>().SetActiveDialogue(0);
                                if (faceId == 0)
                                {
                                    noFaceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                    noFaceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                }
                                else
                                {
                                    faceWindow.GetChild(0).GetComponent <Text>().text = "Name";
                                    faceWindow.GetChild(1).GetComponent <Text>().text = "Text";
                                }
                                functions.SetNoLoop(true);
                                functions.SetDialogueMode(false);
                                dialogProgression = 0;
                            }
                        }
                    }
                }
                else
                {
                    this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = false;
                }
            }
            else
            {
                this.transform.GetChild(0).GetComponent <MeshRenderer>().enabled = false;
                sendDetection = true;
            }
        }
    }
Beispiel #4
0
    // Update is called once per frame
    void Update()
    {
        if (functions.GetPauseMode() == false && functions.GetDialogueMode() == false)
        {
            enableControls(true, true);
            //Debug.Log("Frame "+frameNumber+" : "+transform.position.y);
            //Debug.Log("Gravity : "+gravity);
            //Toutes les 3 frames, on vérifie la position en Y du personnage afin de savoir s'il est en train de tomber ou non
            if (functions.IsMultiple(frameNumber, 3))
            {
                if (poSwitch == true)
                {
                    locationA = transform.position.y;
                    poSwitch  = false;
                }
                else
                {
                    locationB = transform.position.y;
                    poSwitch  = true;
                }
            }
            //On vérifie la différence entre l'ancienne position du personnage et la nouvelle
            if ((poSwitch == true && locationB < locationA) || (poSwitch == false && locationA < locationB))
            {
                isFalling = true;
            }
            else
            {
                isFalling = false;
            }

            characterFall = locationA - locationB;

            //si la valeur ci-dessus est négative, on la change en valeur positive pour la suite du script
            if (characterFall < 0.0f)
            {
                characterFall = characterFall * -1;
            }

            //Le personnage ne touche pas le sol
            //lors d'un saut, permet au personnage de rester en position de saut pendant le nombre de frames désiré avant de passer en position de chute
            if (frameAtJump != 0)
            {
                if ((frameAtJump + 25) == frameNumber)
                {
                    animId      = 4;
                    frameAtJump = 0;
                }
                else
                {
                    animId = 3;
                }
                anim.SetInteger("AnimPar", animId);
            }            //Le personnage est en train de tomber
            else if (isFalling == true && IsFalling(characterFall, gravity))
            {
                animId = 4;
                anim.SetInteger("AnimPar", animId);
            }
            else             //Le personnage touche le sol
            {
                frameAtJump = 0;
                //Le personnage avance en marchant ou en courant selon si la touche shift (gauche ou droite) est activée
                if (Input.GetKey("d"))
                {
                    horizontalAxis = 1.0f;
                }
                else if (Input.GetKey("q"))
                {
                    horizontalAxis = -1.0f;
                }
                else                 //Le personnage ne bouge pas
                {
                    horizontalAxis = 0.0f;
                }

                if (Input.GetKey("z") || Input.GetKey("up"))
                {
                    verticalAxis = 1.0f;
                    speed        = 0.7f;
                    if (Input.GetKey("right shift") || Input.GetKey("left shift"))
                    {
                        speed  = 0.2f;
                        animId = 2;
                    }
                    else
                    {
                        animId = 1;
                    }
                    anim.SetInteger("AnimPar", animId);
                }                //Le personnage recule (toujours en marchant)
                else if (Input.GetKey("s") || Input.GetKey("down"))
                {
                    verticalAxis = -1.0f;
                    speed        = 0.3f;
                    animId       = 2;
                }
                else                 //Le personnage ne bouge pas
                {
                    verticalAxis = 0.0f;
                    animId       = 0;
                }

                anim.SetInteger("AnimPar", animId);
                moveDirection = transform.forward * verticalAxis * speed;
            }

            //Le personnage saute
            if (Input.GetKeyDown(KeyCode.Space))
            {
                //le personnage ne peut sauter que s'il n'est pas en train de tomber
                if (IsFalling(characterFall, gravity) == false)
                {
                    moveDirection.y += jumpHeight;
                    animId           = 3;
                    anim.SetInteger("AnimPar", animId);
                    frameAtJump = frameNumber;
                }
            }

            if (Input.GetKeyDown(KeyCode.F))
            {
                if (fightScript.GetStartBattle() == false)
                {
                    fightScript.SetStartBattle(true);
                }
                else
                {
                    fightScript.SetStartBattle(false);
                }
            }

            //le personnage ne peut pivoter que s'il n'est pas en train de tomber
            if (IsFalling(characterFall, gravity) == false)
            {
                transform.Rotate(0, horizontalAxis * turnSpeed, 0);
            }

            //"controller.Move" permet d'enclencher le déplacement du personnage, "Time.deltaTime" fait en sorte qu'il y ait 60 frames par seconde

            moveDirection.y -= gravity;

            controller.Move(moveDirection);

            //Les 2 lignes suivantes donnent le contrôle de la rotation de la camera (et du personnage) à la souris
            //rotationY += Input.GetAxis("Mouse X") * turnSpeed;
            //transform.rotation = Quaternion.Euler(0, rotationY, 0);

            frameNumber++;
        }
        else if (functions.GetDialogueMode() == true)
        {
            enableControls(false, true);
        }
        else
        {
            enableControls(false, false);
        }
    }