private void Start() { detectionInteraction.cameraJoueur = cameraJoueur; // Quand un objet est sélectionné avec le sélecteur, le joueur reçoit une référence de cet objet detectionInteraction.OnSelectionChange.AddListener((t_objSelectionner) => { objetSelectionner = t_objSelectionner; GameManager.inst.uiManager.UpdateSelection(objetSelectionner); /* * if (t_objSelectionner != null) * { * if (t_objSelectionner.peutEtreUtiliser) * { * objetSelectionner = t_objSelectionner; * GameManager.inst.uiManager.UpdateSelection(objetSelectionner); * } * } * else * { * GameManager.inst.uiManager.UpdateSelection(t_objSelectionner); * } */ }); }
/** * S'occupe de tout les contrôles sauf de la caméra et du mouvement du joueur, appelé dans Update à chaque frame * @param void * @return void * **/ private void Controlles() { // Recentrer la souris lors d'un clic if (Input.GetMouseButtonDown(0)) { if (bloquerSouris) { MouseManager.SetMouse(true); bloquerSouris = true; } } // Touche: E if (Input.GetKeyDown(KeyCode.E)) { // Interaction avec objet sélectionné if (objetSelectionner != null) { if (objetSelectionner.peutEtreUtiliser) { objetSelectionner.Interagir(); objetSelectionner = null; detectionInteraction.objetSelectionner = null; } } } //if (Input.GetKey(KeyCode.Mouse1)) // animBras.SetTrigger("regarderMontre"); // Animation course if (Input.GetKey(KeyCode.LeftShift) && !enCourse) { ToogleCourse(); } else if (Input.GetKeyUp(KeyCode.LeftShift) && enCourse) { ToogleCourse(); } }
private void Update() { if (canInteractWithRaycast) { int layerMask = 1 << 9; layerMask = ~layerMask; Ray ray = cameraJoueur.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); RaycastHit hit; if (Physics.Raycast(ray.origin, ray.direction, out hit, distanceInteraction, layerMask)) { objetSelectionner = hit.transform.GetComponent <ZoneInteraction>(); // Détermine si l'interaction est possible OnSelectionChange.Invoke(objetSelectionner); } else { if (objetSelectionner != null) { objetSelectionner = null; OnSelectionChange.Invoke(null); } } } }
// Rafraichit le texte de sélection qui apparait au milieu de l'écran (Si le paramètre est NULL, alors le texte disparait) public void UpdateSelection(ZoneInteraction objetSelectionner) { if (objetSelectionner != null && selectionVisible) { texte_interaction.gameObject.SetActive(true); if (objetSelectionner.GetType() == typeof(InteractionPorte)) { InteractionPorte objet = objetSelectionner as InteractionPorte; if (objet.porteBarrer) { texte_interaction.text = "La porte est barrée..."; } else { if (objet.porteOuverte) { texte_interaction.text = "'E' pour fermer la porte."; } else { texte_interaction.text = "'E' pour ouvrir la porte."; } } } else { // Type générique texte_interaction.text = "'E' pour interagir avec [" + objetSelectionner.name + "]"; } } else { texte_interaction.gameObject.SetActive(false); texte_interaction.text = ""; } }