[RESOLU] Comment faire un item par terre que le joueur peut ramasser ?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
ludoxe
Messages : 15
Inscription : 23 Mars 2014 19:17

[RESOLU] Comment faire un item par terre que le joueur peut ramasser ?

Message par ludoxe » 23 Nov 2020 18:14

Bonjour,

Question un peu stupide :gene:
Supposons, j'ai une scène avec un joueur, un sol, et un gameObject random par terre.
Je voudrais savoir comment faire pour que quand le joueur se rapproche de l'objet et appuie sur une touche bah il se passe quelque chose.

Merci d'avance.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5542
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Comment faire un item par terre que le joueur peut ramasser ?

Message par boubouk50 » 23 Nov 2020 18:27

Bonjour,

Pour cela, il faut que tu ailles regarder la notion de Collider/Trigger.
Ton personnage, aura un collider (et surement un rigidBody) et ton objet au sol un collider en mode trigger.
Lorsqu'un collider entre en contact avec un trigger, des événements sont appelés, des actions sont disponibles:
Au moment de la collision, pendant toute la collision et à la fin de la collision.
Pour ton cas, tu devras activer la possibilité de ramasser cet objet pendant la collision, via OnTriggerStay ()
https://docs.unity3d.com/ScriptReference/Collider.html

Ce sont des actions basiques disponibles dans beaucoup de tutos, je te conseille d'en consulter quelques uns, dont les Unity Learn (officiels en anglais) et les scènes démo d'Unity.
"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

ludoxe
Messages : 15
Inscription : 23 Mars 2014 19:17

Re: Comment faire un item par terre que le joueur peut ramasser ?

Message par ludoxe » 23 Nov 2020 20:00

Ok merci, en fait j'avais écrit un paragraphe supplémentaire apportant plus de détails et de contexte sur ma question mais j'ai pas dû bien copier/coller ma question sur le forum (j'écrivais sur tel, et je me suis envoyé la question sur mon ordi) :gene:
Enfin bref, en fait je me posais plutôt des questions vis à vis de l'optimisation.
N'est il pas lourd de mettre un OnTriggerStay() pour chaque objet qui serait par terre ?

Merci :-D

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5542
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Comment faire un item par terre que le joueur peut ramasser ?

Message par boubouk50 » 23 Nov 2020 21:56

Si tu veux gérer cela en pur événementiel, tu peux simplement activer quelque chose au Enter et le désactiver au Exit. Dans ce cas, tu gères toi même la gestion de l'événement.
Maintenant, non ce n'est pas lourd, puisque ce sera appelé UNIQUEMENT quand il y aura une collision et comme tu peux prédéfinir les layers impactés, tu peux décider qu'il soit appelé UNIQUEMENT lors d'une collision avec le player. A priori, un seul en même temps, c'est léger par rapport à un Update qui se joue à chaque frame.
"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

ludoxe
Messages : 15
Inscription : 23 Mars 2014 19:17

Re: Comment faire un item par terre que le joueur peut ramasser ?

Message par ludoxe » 24 Nov 2020 16:15

Ok merci pour ces infos !

Edit : comment on fait pour mettre un sujet en résolu svp :gene:

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5542
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Comment faire un item par terre que le joueur peut ramasser ?

Message par boubouk50 » 24 Nov 2020 17:06

Tu édites ton premier message et tu ajoutes [RESOLU] au début du titre/sujet. Simple.
Merci d'y penser ;-)
"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

Répondre

Revenir vers « Scripting »