IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Calcul d'un point de tir idéal d'une tourelle en 2D


Sujet :

Algorithmes et structures de données

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Calcul d'un point de tir idéal d'une tourelle en 2D
    Bonjour, j'aimerai créer un algorithme permettant de calculer avec exactitude où la tourelle doit tirer pour toucher un ennemi en mouvement. J'ai un peu chercher sur le web, mais je n'ai rien trouver a part des études de mouvements d'astre.
    Tout d'abord, j'utilise UE4 en blueprint. Le jeu a une vue du dessus, l'axe Z est donc ignoré. La tourelle est immobile, l'ennemi a un mouvement rectiligne est constant.

    Voici les variables connues :
    Float Vb (vitesse de la balle)
    Vector Pe (position de l'ennemi)
    Vector Ve (vecteur vélocité de l'ennemi)
    Float d (distance horizontale tourelle-ennemi)
    Vector Pt (position de la tourelle)
    Float Angle (Angle Cos-1[Vecteur(PePt).Vecteur(PeVe)]; On obtient un angle de 0 à 180°; donc 0° correspond à l'ennemi qui va directement sur la tourelle et 180° correspond à l'ennemi qui s'éloigne de la tourelle.)

    Voici un schéma de la tourelle et de l'ennemi qui prend seulement en compte Vb et Ve (ne prend pas en compte l'angle): j'en ai déduit P = Pe + Ve* (d/Vb)

    Nom : SchemaProjectiles.png
Affichages : 702
Taille : 30,6 Ko

    On peut voir sur ce schéma que si l'angle = 90°, alors cette formule marche mais si l'angle est != à 90°, on doit ajuster la distance.
    J'ai donc trouvé la formule suivante pour déterminer où la tourelle doit tirer pour toucher l'ennemi, quelque soit la vitesse de la balle et de l'ennemi et quelque soit l'angle :

    P = Pe + Ve*(d/Vb)*MAPRANGE(Value:Angle; InRangeA:0; InRangeB:180; OutRangeA:0; OutRangeB:2)

    Cependant, quand j'effectue mes tests en jeu, cela fonctionne mais ne semble pas exact (la balle ne part pas pile au centre de l'ennemi). Peu etre qu'il faudrait utiliser autre chose qu'une MAPRANGE pour déterminer où la tourelle doit tirer en fonction de l'angle?

    Excusez moi par avance si la syntaxe utilisée pour faire ce post n'est pas bonne, mais n'ayant que très peu touché au C++, je ne connais pas les formulations pour exprimé une MapRange ou encore l'angle, si vous pouvez m'aiguiller je pourrais modifier le post pour qu'il soit plus lisible. Cependant toute aide reste grandement apprécié

    Cordialement, Julien.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] [Pandas] Algorithme calcul à partir de points
    Par Gr1nch3 dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 07/08/2016, 19h11
  2. Réponses: 8
    Dernier message: 20/02/2015, 08h00
  3. [MySQL-5.1] Calcule distance sur POINT
    Par bannik dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/05/2013, 15h48
  4. calculer zoom idéal d'une plage de cellules pour l'imprimer
    Par homerlehamster dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2011, 13h47
  5. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2003, 21h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo