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
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é
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
" 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()
{
}
}
.
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.