Page 1 sur 2

[RESOLU] [DB-AL] Condition scale

Publié : 16 Sep 2019 20:21
par pleiode
Salut tout le monde !
Je suis débutant et je galère a essayer de faire un truc simple, je veux dire, si le scale de mon gameObject et supérieur à.. alors...

Pour l'instant j'en suis là :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

    public GameObject gameObjects;
    public GameObject text;

    // Start is called before the first frame update
    void OnMouseDrag()
    {
        if (gameObjects.transform.localScale > Vector3(2, 0, 0));
        {
          text.SetActive (false);
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
Comme vous vous en doutez ça ne marche pas, et je ne sais pas pourquoi ..!

Une aide me serait précieuse ! :)
Merci d'avance et bonne soirée :) !

Re: Condition scale

Publié : 16 Sep 2019 20:45
par Deceleris
Aha c'est tout simple :D

Au lieu de comparer ton vecteur a, à ton vecteur b, de la manière suivante :
a > b

Fait le en comparant leur composante x, donc de cette manière :
a.x > b.x ou dans ton cas : gameObjects.tansform.localScale.x > 2

Voilà j'espère que ça t'auras aidé :mrgreen:

Re: Condition scale

Publié : 16 Sep 2019 21:11
par pleiode
Cool merci !
Je viens d'essayer et je pense que je ne suis pas loin, mais j'ai une autre erreur dans ma console maintenant ::d

" Assets\NewBehaviourScript.cs(14,25): error CS1061: 'GameObject' does not contain a definition for 'tansform' and no accessible extension method 'tansform' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?) "


Mon script :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

    public GameObject gameObjects;
    public GameObject text;

    // Start is called before the first frame update
    void OnMouseDrag()
    {
        if (gameObjects.tansform.localScale.x > 2);
        {
          text.SetActive (false);
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
.
 ! Message de : Max
Utilisez les balises code SVP
Merci de lire la Charte et sa FAQ, en particulier Comment insérer un script dans un messages ?.

Re: Condition scale

Publié : 16 Sep 2019 21:32
par Max
Bonsoir,

Il faut apprendre à interpréter ce que donne les messages d'erreurs. La solution se trouve quasiment toujours là, tout du moins son début (en complément de la doc bien entendu).
En l’occurrence cela te dit : GameObject' does not contain a definition for 'tansform'
en gros la classe GameObject ne contient pas de définition pour tansform.
Et en lisant tu te rends compte que tu as oublié un "r", et donc ce n'est pas tansform mais transform qu'il faut écrire.

Re: Condition scale

Publié : 16 Sep 2019 22:14
par pleiode
Oui je venez juste de voir l'erreur après mon post désolé ^^. Sauf que j'y arrive toujours pas. Bon j'ai l'impression que c'est ma condition, le Hello ne s'affiche pas dans ma console :/

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

    public GameObject planet;
    public GameObject text;

    
     void Start()
    {

  

         if (planet.transform.localScale.x > 5)
        {
        Debug.Log("Hello");
          text.SetActive(false);
        } 
        
        

    }

    
}

Re: Condition scale

Publié : 16 Sep 2019 22:54
par Max
Ben ton localScale.x > 5 n'est jamais supérieur à 5....
Sinon, ton code est dans Start(), donc exécuté une fois au lancement, donc....

Re: Condition scale

Publié : 16 Sep 2019 23:00
par pleiode
Comment ça mon localScale n'est jamais égal à 5 ? En gros quand j'augmente, en jeu, le scale du gameObject, c'est censé enlever mon texte ! Oui je l'ai remis dans void Update :)

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

    public GameObject planet;
    public GameObject text;

     void Start()
    {

    }

    void Update()
    {
      if (planet.transform.localScale.x > 2)
        {
          Debug.Log("Hello: ");
          text.SetActive(false);
        } 
    }

    
}

Re: Condition scale

Publié : 17 Sep 2019 07:57
par Max
Bonjour,
pleiode a écrit :
16 Sep 2019 23:00
Comment ça mon localScale n'est jamais égal à 5 ?
J'ai pas dit égale. Quand tu donnais ce code:

Code : Tout sélectionner

     void Start()
    {
         if (planet.transform.localScale.x > 5)
        {
        Debug.Log("Hello");
          text.SetActive(false);
        } 
     }
je disais juste qu'au départ, ton localScale n'était donc jamais supérieur à 5.... (à 5.0f en fait)
pleiode a écrit :
16 Sep 2019 23:00
Oui je l'ai remis dans void Update :)
cela sous-entend-t-il que ton soucis est réglé ?

Re: [DB-AL] Condition scale

Publié : 17 Sep 2019 10:30
par pleiode
Salut :) ! ( désolé pour avoir créé mon poste à l'arrache ^^ )

Non toujours pas ^^'. Je ne comprend vraiment pas le problème. Je me suis peut-être mal exprimé, au départ mon object à un scale de 1 (x= 1; y=1; z=1). Puis, quand je j'augmente le scale manuellement mon objet en jeu, jusqu'a atteindre un scale de 5, je veux que mon test se désactive (SetActive (false)). J'espère avoir été plus clair ^^ !

Re: [DB-AL] Condition scale

Publié : 17 Sep 2019 11:14
par boubouk50

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

    public GameObject planet;
    public GameObject text;

    void Update()
    {
      if (planet.transform.localScale.x > 5.0f) //Attention, utilise un float car localScale.x est un float
        {
          Debug.Log("Hello: ");
          text.SetActive(false);
        } 
    }
}
Ton code est fonctionnel, assure-toi seulement que planet et text soient bien renseignés.