Sélectionner un GameObject désactiver
Sélectionner un GameObject désactiver
Bonjour ,
J'ai un problème plutôt simple qui commence a me posez problèmes depuis assez longtemps^^. Enfaîte j'ai mon joueur, je les désactiver avec la commande SetActive. ET lorsqu'il est désactiver je voudrais assigner mon joueur dans une variables que j'ai appelé player, pour le faire j'ai utilisé ceci :
player = GameObject.FindWithTag("Player");
Sauf que puisque mon joueur est désactiver il ne le trouve pas, alors est ce que quelqu’un saurait comment faire parce que la je trouve pas^^. merci d''avance
J'ai un problème plutôt simple qui commence a me posez problèmes depuis assez longtemps^^. Enfaîte j'ai mon joueur, je les désactiver avec la commande SetActive. ET lorsqu'il est désactiver je voudrais assigner mon joueur dans une variables que j'ai appelé player, pour le faire j'ai utilisé ceci :
player = GameObject.FindWithTag("Player");
Sauf que puisque mon joueur est désactiver il ne le trouve pas, alors est ce que quelqu’un saurait comment faire parce que la je trouve pas^^. merci d''avance
- artemisart
- Messages : 1893
- Inscription : 21 Juin 2011 19:51
- Localisation : Centre
- Contact :
Re: Sélectionner un GameObject désactiver
Il faut que tu récupère le joueur et que tu le stocke avant de le désactiver (mais si tu le désactive par code tu devrais déjà l'avoir dans une variable).
Re: Sélectionner un GameObject désactiver
+1, genre:
Attention, si ton objet est désactivé au moment où tu le cherches (je suppose dans ton cas au lancement du jeu), Find ne trouvera pas quand même. Mais comme a dit arte, si tu as déjà pu le désactiver c'est qu'il doit être activer au départ.
L'autre solution quand c'est possible c'est d'avoir une référence publique et d'y glisser ton objet dedans pour y avoir accès. Dans ce cas là il peut être désactivé, aucun souci.
Code : Tout sélectionner
private GameObject target;
void Start()
{
target = GameObject.Find("target");
}
void OnBlablabla()
{
target.SetActive(false);
}
void OnBlablabli()
{
target.SetActive(true);
}
L'autre solution quand c'est possible c'est d'avoir une référence publique et d'y glisser ton objet dedans pour y avoir accès. Dans ce cas là il peut être désactivé, aucun souci.
Re: Sélectionner un GameObject désactiver
Merci pour vous réponse.
Mais enfaîte c'est un peut plus compliquer que sa, car au début du jeux mon Player est activer. Lorsque le joueur appuie sur la touche(n) a proximité d'un GameObject(Ici c'est un tank), le Player se désactive et il prend le contrôle du tank. Pour ce faire le GameObject ce trouvant prés du joueur est un "faux" tank il n'est pas contrôlable et donc quant le joueur appuie sur la touche(n), ce "faux" tank est détruis et j'instancie a la place le "vrai" tank que le joueur contrôle, et je désactive le Player. Et lorsqu'il appuie sur un autre bouton(b) se "vrai" tank est détruis, le "faux" tank apparaît et le Player est censé se réactiver a coté, sauf que le script gérant le fait de réactiver le Player est attaché au "vrai" tank, qui ne peut donc pas cibler le Player car lorsque le tank est présent sur la scène le Player est désactiver.
Enfaîte c'est un script pour monter et descendre du tank. Désolée si j'explique mal^^ x)
Ceci est le script pour entré dans le tank qui est attaché au "faux tank"
Et ceci est le script pour sortir du "vrai" tank
Voila je c'est aussi que je me complique souvent les choses il doit exister des méthodes beaucoup plus pour cela mais bon x)
Mais enfaîte c'est un peut plus compliquer que sa, car au début du jeux mon Player est activer. Lorsque le joueur appuie sur la touche(n) a proximité d'un GameObject(Ici c'est un tank), le Player se désactive et il prend le contrôle du tank. Pour ce faire le GameObject ce trouvant prés du joueur est un "faux" tank il n'est pas contrôlable et donc quant le joueur appuie sur la touche(n), ce "faux" tank est détruis et j'instancie a la place le "vrai" tank que le joueur contrôle, et je désactive le Player. Et lorsqu'il appuie sur un autre bouton(b) se "vrai" tank est détruis, le "faux" tank apparaît et le Player est censé se réactiver a coté, sauf que le script gérant le fait de réactiver le Player est attaché au "vrai" tank, qui ne peut donc pas cibler le Player car lorsque le tank est présent sur la scène le Player est désactiver.
Enfaîte c'est un script pour monter et descendre du tank. Désolée si j'explique mal^^ x)
Ceci est le script pour entré dans le tank qui est attaché au "faux tank"
Code : Tout sélectionner
var player : GameObject;
var vehicule : GameObject;
var vehiculePrefab : Transform;
function Start () {
player = gameObject.Find("Player");
}
function OnTriggerStay (other: Collider) {
if(Input.GetKeyDown(KeyCode.N)) {
player.gameObject.SetActive (false);
Instantiate(vehiculePrefab, transform.position, transform.rotation);
Destroy(gameObject);
}
}
Code : Tout sélectionner
#pragma strict
var leurPrefab : Transform;
var vehicule : GameObject;
var player : GameObject;
function Update () {
player = GameObject.Find("Player");
if(gameObject.CompareTag ("Vehicule") && Input.GetKeyDown(KeyCode.B)) {
vehicule = gameObject;
playert.SetActive (true);
Instantiate(leurPrefab, transform.position, transform.rotation);
Destroy(vehicule);
}
}
-
- Messages : 5
- Inscription : 06 Août 2014 11:49
Re: Sélectionner un GameObject désactiver
Salut,
je ne sais pas si c'est la meilleure méthode, mais je te propose de faire une fonction "Init" dans le script de ton vrai tank, qui prendrait le joueur en paramètre afin de le stocker. Ca donnerait ça pour ton "On Trigger stay" :
En gros, après l'instantiation du vrai tank, je l'initialise en lui donnant le joueur à stocker, et SEULEMENT APRES je désactive le joueur. Comme ça, ton vrai tank a une trace du joueur.
je ne sais pas si c'est la meilleure méthode, mais je te propose de faire une fonction "Init" dans le script de ton vrai tank, qui prendrait le joueur en paramètre afin de le stocker. Ca donnerait ça pour ton "On Trigger stay" :
Code : Tout sélectionner
function OnTriggerStay (other: Collider) {
if(Input.GetKeyDown(KeyCode.N)) {
GameObject tank = Instantiate(vehiculePrefab, transform.position, transform.rotation);
tank.Init(player);
player.gameObject.SetActive (false);
Destroy(gameObject);
}
Re: Sélectionner un GameObject désactiver
jeux007 a écrit :Bonjour ,
J'ai un problème plutôt simple qui commence a me posez problèmes depuis assez longtemps^^.....
Fo savoir.jeux007 a écrit :Merci pour vous réponse.
Mais enfaîte c'est un peut plus compliquer que sa,....
Re: Sélectionner un GameObject désactiver
Les solutions de PoulpyBlast ou de cayou66 ou encore de artemisart sont bonne, il faut absolument stocker ton joueur avant de le désactiver !
Un simple script avec ton player en publique et deux methodes (setFalse et setTrue) pour activer ou désactiver ton joueur !
Un simple script avec ton player en publique et deux methodes (setFalse et setTrue) pour activer ou désactiver ton joueur !
Re: Sélectionner un GameObject désactiver
Ok je vais faire comme vous me l'avez dit merci beaucoup pour vos réponse