Tout d'abord je tiens à vous remercier pour l'aide que vous m'avez apporté, même si cela est mon premier message, car mine de rien, je tombe souvent ici quand je demande a mon pote lilo ou a mon pote google un renseignement. (si vous ne connaissez pas lilo, allez jetter un oeil au passage)
Entrons dans mon soucis si vous le voulez bien.
Alors comme je l'ai dit, je tombe souvent ici, et j'ai bien cherché ma solution avant de m'arracher 10% de mes cheveux
Ce sujet traite particulièrement mon soucis, sauf que je n'y arrive pas (viewtopic.php?f=7&t=3653#p22260)
Mon but, je suis en train de faire un petit jeu à la troisième personne type RPG (solo pour le moment, mais j'aimerais ensuite faire en sorte de jouer avec mes amis, mais on s'écarte la ^^) avec déplacement à la souris. J'utilise la navigation de Unity avec le clique droit pour le déplacement, et donc naturellement je voudrais target mes cibles avec le bouton gauche (un classique quoi).
Pour le moment, j'arrive à faire 90% de ce que je veux, a savoir target une cible (un cube) et changer de target juste en pointant un autre cube. Ma variable "hitHierarchyName" change en prenant sans soucis le nom de la prochaine cible. Cependant et pour des raisons de confort ultérieur, j'aimerais avoir la liste de mes NPC dans une base de donnée (type mysql ou autre, je me suis pas penché dessus encore) C'est pourquoi, chaque cube possède le script Cible.js qui se chargera d'aller récup toutes les variables du NPC (nom, level vie....) Pour le moment, Cible.js ressemble à ça :
Code : Tout sélectionner
var NpcName : String = "Cible 1";
var NpcLevel : int = 1;
Code : Tout sélectionner
var hitHierarchyName : String; // Nom du GameObject selectionné
var tagObjet : String = "targetable" ; // Vérifiez bien que le gameObject possède le tag
var limitDetection : float = 250.0 ; // Définir la limite de distance au delà de laquelle le clic n’est plus prit en compte
var NpcName : String;
function Update() {
if(Input.GetMouseButtonDown(0)){ // Si on clique avec le bouton gauche de la souris
DetecterObjet();
}
}
function DetecterObjet(){
var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Droite (rayon) qui passe par le centre de la caméra et la positon de la souris
var hit : RaycastHit ;
if(Physics.Raycast(ray, hit, limitDetection)){
//Le rayon est lancé. Sa taille sera égale à limiteDetection. Les objets en contact avec le rayon "ray" sont stockés dans la variable hit.
if(hit.transform.CompareTag( tagObjet )){ //Si le tag correspond à un GameObject targetable
hitHierarchyName = hit.transform.name; // hitHierarchyName prend le nom du GameObject dans la "Hierarchy"
NpcName = GameObject.Find(hitHierarchyName).GetComponent("Cible").NpcName; // on recupère la variable NpcName de l'objet hitHierarchyName dans le script Cible.js
}
}
}
Code : Tout sélectionner
NpcName = GameObject.Find(hitHierarchyName).GetComponent("Cible").NpcName;
Quelqu'un saurait me dire à quel point je suis un boulet?
Merci.