[DB-AL] Aucune exécution de mon script.

Pour les scripts écrits en C#
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
primaxix
Messages : 2
Inscription : 12 Déc 2016 17:35
Localisation : France, Bretagne

[DB-AL] Aucune exécution de mon script.

Message par primaxix » 12 Déc 2016 17:52

Bonjour, j'ai crée ce script pour faire en sorte que mon personnage mon "l'escalier" quand j'appuie sur "space" mais rien ne ce passe.

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class escalier : MonoBehaviour {
	
	void OnTriggerEnter2D (Collider2D other){


		if (other.gameObject.tag == "Escalier") 
		{
			if (Input.GetKey (KeyCode.Space)) {

				transform.Translate (0, 4, 0);
			}
		}
	}
}
Merci de votre aide.
 ! Message de : Iwa
Salut à toi, petit message de modération pour dire de :
- se présenter dans la section prévue à cet effet, qu'on sache à qui qu'on cause :)
- ne pas oublier les balises codes, 4ème bouton de la première ligne des boutons d'édition ;)

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

Re: [DB-AL] Aucune exécution de mon script.

Message par Iwa » 12 Déc 2016 18:06

Bonjour à toi,

Je vois l'idée que tu veux réaliser, par contre, en effet il me semble que ne j'aurai pas utilisé cette méthode là.

Analysons un peu : tu veux que quand tu appuies sur Espace, tu montes, quoi qu'il arrive, ou peut-être que non, t'es un rigide du saut et tu sautes QUE dans les escalier (ta maman t'as pas dit que c'était dangereux? :D ).

Toi tu fais l'inverse, tu regardes où tu triggers, donc dans quel collider tu rentres, puis si jamais t'appuies sur espace quand tu rentres et seulement quand tu rentres, tu sautes.

Bof. Faut être sacrément synchro :D. Il te faudrait plutôt faire une fonction Update qui attends si oui ou non tu as fait espace.
Dés que tu as fait espace, tu rentres dans une boucle conditionnelle : si je collide avec Escalier, je saute.

Comprends tu mieux l'idée?
"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 ;)

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB-AL] Aucune exécution de mon script.

Message par Moi 1971 » 12 Déc 2016 18:14

Bonjour inconnu,
Y a t'il un ou des messages d'erreur dans la console de debug?
Sur quel GO est placé ton script nommé "escalier"
La fonction "OnTriggerEnter2D" est appelée une fois quand un objet entre dans la zone. Pour que ton code fonctionne il faut que en même temps le joueur appuie sur la barre d'espace. Est-ce le fonctionnement voulu?

Peux-tu tester cette modification temporaire de ton code et nous transmettre le contenu de la console degug.

Code : Tout sélectionner

void OnTriggerEnter2D (Collider2D other){

      Debug.Log("Dans le OnTriggerEnter2D : other.gameObject.tag = >"+other.gameObject.tag+"<");
      if (other.gameObject.tag == "Escalier")
      {
      Debug.Log("Dans le if ");
      transform.Translate (0, 4, 0);
       }
   }
Doublé par Iwa...

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

Re: [DB-AL] Aucune exécution de mon script.

Message par boubouk50 » 12 Déc 2016 18:15

Tu as aussi la fonction OnTriggerStay2D (), qui est appelée tant que tu es dans la zone de trigger, au lieu de OnTriggerEnter2D () qui n'est appelée qu'une seule fois: lorsque tu entres dans la zone de trigger.

EDIT - On fait la course? (C'est ma solution qu'il lui faut!!)
"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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB-AL] Aucune exécution de mon script.

Message par Moi 1971 » 12 Déc 2016 18:29

boubouk50 a écrit :... (C'est ma solution qu'il lui faut!!)
Oui, son code fonctionnera, mais la structure de son code est mauvaise, comme l'a fait remarqué Iwa.

primaxix
Messages : 2
Inscription : 12 Déc 2016 17:35
Localisation : France, Bretagne

Re: [DB-AL] Aucune exécution de mon script.

Message par primaxix » 12 Déc 2016 18:59

Merci de vos réponse.


Iwa:
Je fais essayer ce que tu m'a dit je te remercie.

Moi 1971:
Mon tag "Escalier" est mis sur un cube au bout de ma map,
avec ton code la console debug marque "Dans le if" et je monte l'escalier mais je n’appuie sur aucune touche.
Merci

boubouk50:
Ton code fonctionne comme je le voulais, je fais l'utiliser pour le moment jusqu’à que j'arrive a faire comme Iwa a dit.
Merci.

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

Re: [DB-AL] Aucune exécution de mon script.

Message par Iwa » 13 Déc 2016 12:51

Mais Iwa n'a pas la science infuse et c'est une solution aussi ;). Un peu plus gourmand peut-être? Mais si ça marche comme ça c'est déjà une étape :). Pense bien cela dit à formuler ton algorithme dans ta tête, voir sur papier, écrit ce que ça doit faire et la logique que ça devrait suivre :). Ca t'aidera déjà.

En tout cas, si tu as tout ce qu'il te faut, n'hésite pas à éditer ton premier post et mettre [RESOLU].

En vous remerciant ;)
"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 ;)

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

Re: [DB-AL] Aucune exécution de mon script.

Message par boubouk50 » 13 Déc 2016 13:03

Comme le dit Iwa, ton gameplay n'est pas du tout clair. Chacun de nous l'a interprété différemment, j'ai répondu connement à ton besoin, Iwa à chercher à aller plus loin, et Moi 1971 t'a expliqué quelques unes des zones d'ombre de ta question.
L'idée ici, je pense, était de simplement faire monter un personnage à un escalier en appuyant sur Espace, ce qui totalement indépendant d'un saut. Au vu de ton code, l'escalier est face à nous et pas de côté.
Tu devrais, par contre, lier la translation au deltaTime, pour que ton perso monte l'escalier à une vitesse unique, sinon il montera en fonction du framerate, et sur un pc bourrin, il va carburer à 20000.

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class escalier : MonoBehaviour {

	public float speed = 4.0f; //déclaration de la vitesse pour pouvoir la régler directement dans l'éditeur avant de la fixer
	void OnTriggerEnter2D (Collider2D other){

		if (other.gameObject.tag == "Escalier") 
		{
			if (Input.GetKey (KeyCode.Space)) {
				transform.Translate (0f, speed * Tile.deltaTime, 0f); //Vitesse en fonction du framerate pour une vitesse constante
			}
		}
	}
}
"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

Verrouillé

Revenir vers « (C#) CSharp »