Bonjour à tous. Je souhaite faire un truc comme ceci sur unity :
Mais je n'ai aucune idée de comment faire, ni que chercher sur google comme mot clé pour trouver ce que je cherche. L'idéal serait de faire un prefab et de pouvoir tracer un chemin comme je le veux. Voila, si vous ne savez pas comment faire mais connaissez une technique ou juste un mot clé qui pourrait m'aider je suis prenneur. Merci .
Animation ? Material ?
Re: Animation ? Material ?
Salut
c'est le trait rouge qui pose probleme ?
une solution serait de déplacer l'UV du material avec un "cutout" ? ainsi ta texture rouge se déplace sur ton mesh.
c'est le trait rouge qui pose probleme ?
une solution serait de déplacer l'UV du material avec un "cutout" ? ainsi ta texture rouge se déplace sur ton mesh.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: Animation ? Material ?
Salut, merci de ta réponse. Oui c'est le trait rouge qui m'embête, mais j'ai trouvé une solution, mais peut être pas très optimisée et c'est un peu du bricolage.
En fait j'ai juste joué sur le facteur scale d'un cube rouge, et le scale s'arrête quand il atteint un box collider placé au bout comme ça : (je sais pas si c'est très clair.
et en play ça donne ça :
Et les scripts pour ceux que ça intéresse :
Le trait rouge :
La plaque :
voila, pour la porte je devrai m'en sortir et pour que le trait fasse un angle je pensais instancier une copie du trait avec un scale dans un autre axe par exemple, toujours pour pouvoir en faire un prefab facilement; Si vous avez des meilleurs idées je suis toujours preneur
En fait j'ai juste joué sur le facteur scale d'un cube rouge, et le scale s'arrête quand il atteint un box collider placé au bout comme ça : (je sais pas si c'est très clair.
et en play ça donne ça :
Et les scripts pour ceux que ça intéresse :
Le trait rouge :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RedExpand : MonoBehaviour {
public bool etendre = true;
void Start () {
}
void Update () {
if (etendre == true && ActivePressurePlate.isPlaque == true) {
transform.localScale += new Vector3 (0.1F, 0, 0);
}
if(etendre == false){
transform.localScale = transform.localScale;
}
}
void OnTriggerEnter(Collider other){
if (other.tag == "Bonus") {
etendre = false;
}
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ActivePressurePlate : MonoBehaviour {
public AudioClip soundtick;
public AudioSource audiosource;
public static bool isPlaque = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other){
transform.Translate (0,-0.01f,0);
transform.Translate (0,-0.01f,0);
GetComponent<AudioSource> ().PlayOneShot (soundtick);
isPlaque = true;
}
void OnTriggerExit(Collider other){
transform.Translate (0,0.01f,0);
transform.Translate (0,0.01f,0);
GetComponent<AudioSource> ().PlayOneShot (soundtick);
isPlaque = false;
}
}
Re: Animation ? Material ?
Bonjour,
Il y a des trucs qui ne vont pas dans ton code.
Tout ce qui est modification visuelle doit se faire dans la fonction FixedUpdate() et pas dans la fonction Update(). Voir la doc pour la différence entre les deux.
Tes conditions sont très mal exprimées. Si tu fais un test :
Si ce test est faut, alors pas besoins de tester son contraire, il faut utiliser un "else" qui fait le boulot très bien sans consommer de temps CPU pour rien.
De plus, le test si dessus est égal à celui-ci:
Alors c'est une habitude à prendre pour un informaticien de lire/écrire ce test comme ceci. Un booléen est forcément égal à True ou False.
Donc ça écrit
il faut utiliser le "==" ou "!=" pour les booléens quand on compare deux booléens entre eux.
En suite, le pire :
Ce code ne sert à rien.Il faut l'enlever.
Pour le script "la plaque" dans la fonction "OnTriggerEnter" Pourquoi faire deux fois de suite "transform.Translate (0,-0.01f,0);" ?
Pourquoi ne pas faire en une fois "transform.Translate (0,-0.02f,0);"? Pareil dans exit.
bon code...
Il y a des trucs qui ne vont pas dans ton code.
Tout ce qui est modification visuelle doit se faire dans la fonction FixedUpdate() et pas dans la fonction Update(). Voir la doc pour la différence entre les deux.
Tes conditions sont très mal exprimées. Si tu fais un test :
Code : Tout sélectionner
if (etendre == true)
Si ce test est faut, alors pas besoins de tester son contraire, il faut utiliser un "else" qui fait le boulot très bien sans consommer de temps CPU pour rien.
De plus, le test si dessus est égal à celui-ci:
Code : Tout sélectionner
if (etendre)
Donc ça écrit
Code : Tout sélectionner
if (etendre) // Si etendre == true
ou
if (!etendre) // Si etendre == false
Code : Tout sélectionner
if (fin != debut)
Code : Tout sélectionner
if(etendre == false){
transform.localScale = transform.localScale;
}
Pour le script "la plaque" dans la fonction "OnTriggerEnter" Pourquoi faire deux fois de suite "transform.Translate (0,-0.01f,0);" ?
Pourquoi ne pas faire en une fois "transform.Translate (0,-0.02f,0);"? Pareil dans exit.
bon code...