Sélectionner un GameObject désactiver

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
jeux007
Messages : 45
Inscription : 20 Nov 2011 23:59
Localisation : Mont de Marsan
Contact :

Sélectionner un GameObject désactiver

Message par jeux007 » 30 Jan 2015 15:31

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

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Sélectionner un GameObject désactiver

Message par artemisart » 30 Jan 2015 19:12

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).

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Sélectionner un GameObject désactiver

Message par cayou66 » 30 Jan 2015 20:17

+1, genre:

Code : Tout sélectionner


private GameObject target;

void Start()
{
  target = GameObject.Find("target");
}

void OnBlablabla()
{
  target.SetActive(false);
}

void OnBlablabli()
{
  target.SetActive(true);
}
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.

Avatar de l’utilisateur
jeux007
Messages : 45
Inscription : 20 Nov 2011 23:59
Localisation : Mont de Marsan
Contact :

Re: Sélectionner un GameObject désactiver

Message par jeux007 » 01 Fév 2015 18:52

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"

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

}
Et ceci est le script pour sortir du "vrai" tank

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

   }

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)

PoulpyBlast
Messages : 5
Inscription : 06 Août 2014 11:49

Re: Sélectionner un GameObject désactiver

Message par PoulpyBlast » 05 Fév 2015 11:39

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" :

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

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Sélectionner un GameObject désactiver

Message par ZJP » 05 Fév 2015 16:47

jeux007 a écrit :Bonjour ;) ,

J'ai un problème plutôt simple qui commence a me posez problèmes depuis assez longtemps^^.....
jeux007 a écrit :Merci pour vous réponse.
Mais enfaîte c'est un peut plus compliquer que sa,....
Fo savoir. :?

Avatar de l’utilisateur
3ng3l
Messages : 33
Inscription : 05 Oct 2014 15:33

Re: Sélectionner un GameObject désactiver

Message par 3ng3l » 06 Fév 2015 16:05

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 !

Avatar de l’utilisateur
jeux007
Messages : 45
Inscription : 20 Nov 2011 23:59
Localisation : Mont de Marsan
Contact :

Re: Sélectionner un GameObject désactiver

Message par jeux007 » 07 Fév 2015 19:04

Ok je vais faire comme vous me l'avez dit merci beaucoup pour vos réponse :D :D

Répondre

Revenir vers « Scripting »