Comment afficher une icone pour ouvrir une porte ?

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
DELEMA
Messages : 6
Inscription : 09 Mars 2016 23:36

Comment afficher une icone pour ouvrir une porte ?

Message par DELEMA » 09 Mars 2016 23:47

Bonjour,

J'ai récupéré un script qui me permet d'ouvrir une porte en appuyant sur une touche (que j'ai changé d'ailleurs).
Lorsque je m'approche d'une porte, le script détecte le joueur et affiche un caractère, la lettre E, au milieu de l'écran.

Mais j'aimerais à la place afficher une icône plus explicite dans le genre de skyrim (lettre blanche sur fond noir).

Pouvez-vous m'aider ?

Code : Tout sélectionner


// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
private var open : boolean;
private var enter : boolean;

private var defaultRot : Vector3;
private var openRot : Vector3;

function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}

//Main function
function Update (){
if(open){
//Open door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
}else{
//Close door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
}

if(Input.GetKeyDown("e") && enter){
open = !open; 
}
}

function OnGUI(){
if(enter){
GUI.Label(new Rect(Screen.width/2-4, Screen.height/2,200,200), "E"); <-- voici la fameuse touche ;D
}
}

//Activate the Main function when player is near the door
function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;
}
}

//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}
}

nigel
Messages : 166
Inscription : 05 Mai 2015 01:51

Re: Comment afficher une icone pour ouvrir une porte ?

Message par nigel » 10 Mars 2016 00:09

tu as regardé du coté des world space canvas ?
ça explose -> Atomic Command
ca vole -> Long Range Black Cat

DELEMA
Messages : 6
Inscription : 09 Mars 2016 23:36

Re: Comment afficher une icone pour ouvrir une porte ?

Message par DELEMA » 10 Mars 2016 00:12

C'est pas la nouvelle fonctionnalite pour avoir une sorte de hud ?
Je vois pas trop comment relier ça au script de la porte.

nigel
Messages : 166
Inscription : 05 Mai 2015 01:51

Re: Comment afficher une icone pour ouvrir une porte ?

Message par nigel » 10 Mars 2016 01:49

tu dois pouvoir mettre un composant canvas (proprietés ui) à ta porte, choisir le type d''espace (screen camera world),
puis mettre un script su ta porte qui commande l'affiche du composant UI.
ça explose -> Atomic Command
ca vole -> Long Range Black Cat

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: Comment afficher une icone pour ouvrir une porte ?

Message par Iwa » 10 Mars 2016 10:53

Salut à toi,

Tu utilises actuellement l'ancienne UI avec le script GUI alors que pour te simplifier la vie, il faudrait basculer avec la nouvelle Ui Unity.

Il y a tous les tutos nécessaires pour les bases ici : https://unity3d.com/learn/tutorials/top ... terface-ui

Tu as besoin de créer une image d'UI et de le récupérer dans ton script. Tu n'aurais ensuite qu'à remplacer

Code : Tout sélectionner

function OnGUI(){
if(enter){
GUI.Label(new Rect(Screen.width/2-4, Screen.height/2,200,200), "E"); <-- voici la fameuse touche ;D
}
}
par ça

Code : Tout sélectionner

function Update(){
if(enter){
imageOfLetterE.gameObject.SetActive (true); <-- voici la fameuse touche ;D
}

else{
imageOfLetterE.gameObject.SetActive (false); 
}
	
}
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

DELEMA
Messages : 6
Inscription : 09 Mars 2016 23:36

Re: Comment afficher une icone pour ouvrir une porte ?

Message par DELEMA » 10 Mars 2016 11:59

Merci pour votre aide,

j'ai donc remplacé le morceau de scripte, et créé un sprite dans mon canvas avec une icone E (renommée: imageOfLetterE).
Mais la console me dit " Unknow identifier: 'imageOfLetterE' "

Code : Tout sélectionner

// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
private var open : boolean;
private var enter : boolean;

private var defaultRot : Vector3;
private var openRot : Vector3;

function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}

//Main function
function Update (){
if(open){
//Open door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
}else{
//Close door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
}

if(Input.GetKeyDown("e") && enter){
open = !open; 
}
}

if(enter){
imageOfLetterE.gameObject.SetActive (true);
}

else{
imageOfLetterE.gameObject.SetActive (false);
}

//Activate the Main function when player is near the door
function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;
}
}

//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}
}

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6226
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Comment afficher une icone pour ouvrir une porte ?

Message par boubouk50 » 10 Mars 2016 12:08

imageOfLetterE est un nom de variable, il faut la déclarer dans ton script et l'initialiser avec ton Image.

Code : Tout sélectionner

// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
var imageOfLetterE;
...
Ensuite dans l'Inspector, tu va glisser/déposer ton GameObject dans le slot nommé image Of Letter E du script
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

DELEMA
Messages : 6
Inscription : 09 Mars 2016 23:36

Re: Comment afficher une icone pour ouvrir une porte ?

Message par DELEMA » 10 Mars 2016 12:38

J'ai bien ajouté la variable au script mais aucun slot n'apparait sous les autres (smooth, door open angle)

Image

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6226
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Comment afficher une icone pour ouvrir une porte ?

Message par boubouk50 » 10 Mars 2016 12:56

Désolé, UnityScript, déclaration, toussa...

Code : Tout sélectionner

 var imageOfLetterE : GameObject;
Je crois que ça devrait le faire. Si ça le fait pas, ajoute public devant var.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

DELEMA
Messages : 6
Inscription : 09 Mars 2016 23:36

Re: Comment afficher une icone pour ouvrir une porte ?

Message par DELEMA » 10 Mars 2016 13:18

Ca a l'air de marcher, mais lorsque je m'approche de la porte l’icône ne réapparait pas.
Je me dis que ça dois être tout con mais je vois pas comment faire. :D

Code : Tout sélectionner


var smooth = 2.0;
var DoorOpenAngle = 90.0;
var imageOfLetterE : GameObject;
private var open : boolean;
private var enter : boolean;

private var defaultRot : Vector3;
private var openRot : Vector3;

function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}

//Main function
function Update (){
if(open){
//Open door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
}else{
//Close door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
}

if(Input.GetKeyDown("e") && enter){
open = !open; 
}
}

if(enter){
imageOfLetterE.gameObject.SetActive (true);
}

else{
imageOfLetterE.gameObject.SetActive (false);
}

//Activate the Main function when player is near the door
function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;
}
}

//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}
}

Verrouillé

Revenir vers « (Js) Javascript »