// 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); } } } }
// 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); } }
// 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; } } }
// 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); } }