Ursina Python detecter si une entité est cliquée
Bonjour,
Je débute en python, et j'aimerais savoir comment détecter un clic sur une entité avec ursina. Voici ce que j'ai fait :
from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() for z in range(10): for x in range(10): Entity( model="cube", color=color.white, collider="box", ignore=True, position=(x, 0, z), parent=scene, origin_y= 0.5 ) class ColorBox(Button): def __init__(self, position=(5, 2, 5)): super().__init__( position=position, model="cube", color=color.red, parent=scene, origin_y= 0.5) def input(self, key): if self.hovered: if key == "left mouse down": print('Color Changed') self.color= color.random_color() ColorBox() player = FirstPersonController() app.run()
J'ai l'impression que quoi que je fasse la fonction input n'est pas executée, une idée?
- Ursina Python detecter si une entité est cliquée
- Comment détecter un traceur sur téléphone - Accueil - Confidentialité
- Citizen code python avis - Accueil - Outils
- Détecter clé usb - Guide
- Détecter des billets dans une enveloppe - Forum Loisirs / Divertissements
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
9 réponses
Comment ça, tu as remarqué ça ?
Ce n'est pas toi qui as écris le code ?
Tu ne sais pas comment il fonctionne ?
class ColorBox(Button): def __init__(self, position=(5, 2, 5)): r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) super().__init__( position=position, model="cube", color=color.color(r, g, b), parent=scene, origin_y= 0.5) def input(self): if self.hovered: self.color.color(r, g, b)
J'ai vite changé, car le changement de couleurs ne marchait pas. Mais je ne sais toujours pas, ni comment, ni où appeler la fonction.
Si tu débutes en Python, tu devrais commencer par des trucs plus simples. Connais tu les bases sur les classes, les fonctions et comment les invoquer ?
Je ne pratique pas Ursina, mais ta fonction input() est une méthode de la classe ColorBox, et en général, on crée un ou des objets à partir d'une classe et ensuite on leur applique les méthodes utiles
Exemple :
class Personne: def __init__(self, nom, prenom): self.nom = nom self.prenom = prenom def presenter(self) : return self.nom + " " + self.prenom #Création d'une personne: p1 = Personne('Jean', 'Transcène') #appel de la méthode presenter: print(p1.presenter())
Bonjour,
(texte original, avant correction) je l'avais juste mise trop a droite et elle n'était pas comptée dans le button
C'est ce qu'on appelle une erreur d'indentation, si tu vois ce que c'est et à quoi ca sert (de la façon dont tu en parles, on ne dirait pas)
Comme tu avais fait, la fonction input était à l'intérieur de la fonction __init__. D'où l'intérêt de revoir les bases de Python et de commencer par des trucs simples, au lieu de recopier du code vu sur Youtube
"Science sans conscience n'est que ruine de l'âme" -- Rabelais
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Pour revenir à la question initiale, voir cette discussion.
Je t'invite toutefois (comme Phil_1857 le dit fort justement) à ne pas mettre la charrue avant les bœufs. Tu ne pourras pas aller bien loin avec ursina tant que tu n'auras pas les bases en python (en particulier tout ce qui est lié à l'indentation), en algorithmique (fonctions, conditions, boucles ...) et en programmation objet (classes, instances, méthodes, ...). Il existe de nombreux tutoriels gratuits en ligne pour découvrir python, ce serait sans doute un bon début.
Quand ceci sera acquis, il sera temps de travailler avec un module déjà écrit (pourquoi pas ursina), comprendre la documentation et le éventuels bouts de code que tu pourrais trouver sur Internet.
Si tu décides de faire un patchwork de bouts de codes sans les comprendre et en les bidouillant sans trop comprendre ni comment, ni pourquoi, ton code n'aura rapidement aucun sens et tu n'atteindras pas tes objectifs (voire tu risques de te décourager).
Après... à toi de voir :-)
Bonne chance
Bonjour Mamiemando,
Sympa d'avoir ajouté l'auteur de la citation dans mon message
Par contre, comment fais-tu pour mettre en forme le texte original en gris
au début ?
Hello Phil,
Sympa d'avoir ajouté l'auteur de la citation dans mon message
De rien :-)
Par contre, comment fais-tu pour mettre en forme le texte original en gris
Avec le bouton "citation", le bouton le plus à droite (avec une icône guillemets) dans la barre de mise en forme des messages.
Bonne journée
Bonsoir Phil,
Heuuu .... serait-ce réservé aux modérateurs ? :-)
Aussi intrigué que toi, j'ai vérifié et j'ai bien les guillemets en fin de ligne d'icones. Et l'utilise ici pour la première fois.
Mais peut-être n'est-ce accessible qu'aux modérateurs et contributeurs.
Bonjour, je ne sais pas si vous avez accès à ce forum, mais j'ai ouvert une discussion sur cet aspect ici. Selon brupala et Gadjow, ce fait est déjà connu d'Adraen, mais il n'est pas très clair à mes yeux s'il s'agit d'un choix délibéré ou non, ni les raisons qui sont derrières.
Oui, j'ai remarqué, mais je ne sais pas où l'appeler.