Bonjour !

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
fazeone1981
Messages : 5
Inscription : 21 Juil 2010 06:46
Localisation : Montréal
Contact :

Bonjour !

Message par fazeone1981 » 21 Juil 2010 06:59

Je me présente ! francois , enchanter de vous connaitre !

J'ai une petite question car je suis une recrue du scripting ,

j'ai attacher une image montrant l'exemple donc je veut réussir

voila , j'ai une urne comme vous voyez avec un mesh collider ..

j'ai utiliser le prefab venant avec unity , le first person controller pour mon personnage ,

ce que je veut obtenir en script est un guitexture qui décrit l'objet en appuyant sur le bouton droit de la souris lorsque je suis en collision avec l'urne !

merci !

Image

Avatar de l’utilisateur
tekkpaf
Messages : 205
Inscription : 31 Mars 2010 10:59
Localisation : Besançon
Contact :

Re: Bonjour !

Message par tekkpaf » 21 Juil 2010 09:24

Salut,
Tu crées un GUI.Textarea ->

Code : Tout sélectionner

TextArea (position : Rect, text : string) : string
tu initialises text avec "" (champs vide).
Dans une fonction OnMouseDown tu donnes à text la valeur : "ta description" et dans une fonction OnMouseOut tu fais un petit text = "".
Il 10 types de personnes, ceux qui comprennent le binaire, et ceux qui ne le comprennent pas.

fazeone1981
Messages : 5
Inscription : 21 Juil 2010 06:46
Localisation : Montréal
Contact :

Re: Bonjour !

Message par fazeone1981 » 22 Juil 2010 19:46

J'ai tester le script en vain ,

j'ai expérimenté avec succès un script qui permettais de faire apparaitre un GUITEXTURE et un son lors d'une collision par trigger , tout sa détruit avec un yeild de 5 secondes .. ,

alors je me suis pencher sur un code me permettant d'appuyer sur une touche du clavier pour en faire le meme effet .. sans que sa pop d'un seul coup ..

voici mon script .. mais il me disent .. Update() can not be a coroutine .. et je suis bloquer depuis ..

var showgui = false;
var playClip : AudioClip;
var textureToDisplay : Texture2D;
function OnGUI () {
if (showgui) {
GUI.Label (Rect (150, 50, textureToDisplay.width, textureToDisplay.height),
textureToDisplay);
}
}

function Update () {
if (Input.GetKeyDown ("Fire1")){
showgui = true;
audio.clip = playClip;
audio.Play();
yield WaitForSeconds (5);
showgui = false;

}

}

Avatar de l’utilisateur
tekkpaf
Messages : 205
Inscription : 31 Mars 2010 10:59
Localisation : Besançon
Contact :

Re: Bonjour !

Message par tekkpaf » 23 Juil 2010 11:26

Faut pas mettre de yield dans un update. Ça vient de là ton message d'erreur.
Il 10 types de personnes, ceux qui comprennent le binaire, et ceux qui ne le comprennent pas.

antho2b
Messages : 63
Inscription : 12 Juin 2010 19:09
Localisation : Nantes

Re: Bonjour !

Message par antho2b » 24 Juil 2010 14:11

Salut Fazeonne

Moi j'ai pas tout compris aux explications du dessus.
Cependant, je suis intéressé par ta version du code :

en cliquant sur un objet on fait apparaitre un texte ( ou une image avec le texte).
Peux tu le publier ici STP?
Meci

fazeone1981
Messages : 5
Inscription : 21 Juil 2010 06:46
Localisation : Montréal
Contact :

Re: Bonjour !

Message par fazeone1981 » 25 Juil 2010 23:33

Voici le code fonctionnel pour un évènement de GUI en texture lors d une collision avec l objet par un joueur ..
tu peu mettre un clip audio et une texture de ton choix , tout disparait après le nombre de secondes voulu par le yield ..


var showgui = false;
var playClip : AudioClip;
var textureToDisplay : Texture2D;
function OnGUI () {
if (showgui) {
GUI.Label (Rect (150, 50, textureToDisplay.width, textureToDisplay.height),
textureToDisplay);
}
}

function OnTriggerEnter(){
showgui = true;
audio.clip = playClip;
audio.Play();
yield WaitForSeconds (5);
showgui = false;

}

p.s ,, j ai enlever le yield pour une fonction onkeydown mais sa ne fonctionne pas .. , unity lance une erreur comme quoi que Fire1 est une touche inexistante .

fazeone1981
Messages : 5
Inscription : 21 Juil 2010 06:46
Localisation : Montréal
Contact :

Re: Bonjour !

Message par fazeone1981 » 26 Juil 2010 00:50

ce script fonctionne sur un event de collision en Keydown avec la touche C .. mais je n arrive pas a trouver une alternative a yeild pour faire disparaitre le gui texture .. , j ai fait destroy après quelque secondes .. mais sa détruit l objet ainsi que la texture .. est ce qu il y a un moyen de mettre une fonction d attente avant le

showgui = false; .. car un yeild avant cela me donne une erreur de coroutine ..


var showgui = false;
var playClip : AudioClip;
var textureToDisplay : Texture2D;
function OnGUI () {
if (showgui) {
GUI.Label (Rect (150, 50, textureToDisplay.width, textureToDisplay.height),
textureToDisplay);
}
}

function Update () {
if (Input.GetKeyDown ("c")){
showgui = true;
audio.clip = playClip;
audio.Play();
showgui = false;


}

}

fazeone1981
Messages : 5
Inscription : 21 Juil 2010 06:46
Localisation : Montréal
Contact :

Re: Bonjour !

Message par fazeone1981 » 27 Juil 2010 08:15

J ai trouver la solution, alors si vous voulez faire une apparition de GUItexture par Collision par le player .. voici le script .. ( L objet en question doit avoir un Collider avec Ontrigger Coché )

var showgui = false;
var playClip : AudioClip;
var textureToDisplay : Texture2D;
function OnGUI () {
if (showgui) {
GUI.Label (Rect (150, 50, textureToDisplay.width, textureToDisplay.height),
textureToDisplay);
}
}

function OnTriggerEnter(){
showgui = true;
audio.clip = playClip;
audio.Play();
yield WaitForSeconds (5);
showgui = false;

}


le prochain script serais attacher a un empty object avec un Box Collider .. appliquer sur les limites de votre sol en dessous de votre objet qui dévoile le GUItexture ..

var playClip : AudioClip;

function Update() {
if (Input.GetKeyDown ("c")){
audio.clip = playClip;
audio.Play();
Application.LoadLevel (1);


}

}

ce script permet de changer de tableau ou n importe quel fonction par une touche clé, j'ai mis c comme référence , mais sa peu être a peu près n importe quoi

et voila !! sa marche a merveille .. un petit peu plus de boulot mais au moins cela fonctionne !


Image

Répondre

Revenir vers « Scripting »