[DB-AL] Tir en direction du clic

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
atleast_
Messages : 2
Inscription : 03 Mai 2017 13:37

[DB-AL] Tir en direction du clic

Message par atleast_ » 03 Mai 2017 13:48

Bonjour à tous,
Depuis ce matin, j'ai un problème sur mon petit jeu 2d.
En effet je voulais pouvoir faire tirer le joueur, à l'aide d'instantiate je crée la balle et je la fais bouger avec AddForce, ce qui donne mon code actuel :

Code : Tout sélectionner

public GameObject prefab;
	public float thrust = 1000;
	private GameObject Balle;

    void Update() {
        if (Input.GetMouseButtonDown(1)) {
          	Fire();
        }
    }
    void Fire(){                   
        Balle = Instantiate(prefab, transform.position, Quaternion.identity);
       	Rigidbody2D BalleRb = Balle.gameObject.GetComponent<Rigidbody2D>();
       	BalleRb.AddForce(transform.up * thrust);
        Destroy(Balle, 2f);             
    }
Or ce code tire ma balle du coté supérieur de mon joueur, (BalleRb.AddForce(transform.up * thrust);) et j'aimerai que la balle parte en direction du clic !
Je sais que ce bout de code renvoie la position de la souris dans le plan mouse = Input.mousePosition si je fais cela (BalleRb.AddForce(mouse * thrust);) je ne vois même plus ma balle. mouse est un vecteur 3d, le problème vient-t-il de la ?
Si quelqu'un sait comment tirer un projectile vers la position de la souris je lui serai reconnaissant ! Merci.

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

Re: [DB-AL] Tir en direction du clic

Message par boubouk50 » 03 Mai 2017 14:05

Salut,

Je suppose que ton jeu est de vue de côté? Ça serait bien de préciser, on est pas dans ta tête.
Le vecteur directionnel entre ton clic souris et ton fusil est la soustraction des deux points (en partant par l'arrivée).
Image
(Je ne travaille pas en 2D, je ne sais donc pas si les positions correspondent aux coordonnées écran)
Le mousePosition te renvoie les coordonnées à l'écran en pixel.
Le transform.position te renvoie les coordonnées monde en world units.
Il te faut donc faire la conversion du mouseposition dans le monde pour trouver le vecteur final, et cela tu le trouves grâce à la caméra et sa fonction ScreenToWorldPoint ().
Tu as donc maintenant les deux points dans le même système de coordonnées, tu peux calculer le vecteur directionnel.
Attention tout de même à l'axe z (la profondeur), il faudrait qu'elle soit de 0 dans ton vecteur directionnel, je pense.
"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

atleast_
Messages : 2
Inscription : 03 Mai 2017 13:37

Re: [DB-AL] Tir en direction du clic

Message par atleast_ » 03 Mai 2017 20:38

Merci de ta réponse, oui c'est en 2d et vue de coté désole d'avoir oublié de préciser. Je vais chercher avec les éléments de réponse que tu m'a donner.

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [DB-AL] Tir en direction du clic

Message par Greg » 08 Mai 2017 16:48

Bonjour,

Récupérer la position de la souris en WorldPoint :
https://docs.unity3d.com/2017.1/Documen ... Point.html

Calculer la direction et/ou la distance :
https://docs.unity3d.com/Manual/Directi ... other.html

:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Répondre

Revenir vers « (C#) CSharp »