• 28 Mars 2024, 13:03:58


Auteur Sujet: [TP] Le topic à exercice ! [Version 2]  (Lu 49579 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Vellric

  • *
  • Nouveau
  • Messages: 9
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #45 le: 02 Septembre 2011, 13:51:09 »
Merci à toi je vais regarder pou faire ça et je la mettrai sur le sujet pour voir ce que ça donne ^^

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #46 le: 30 Octobre 2011, 12:39:48 »
Salut !

Ça faisait longtemps que je n'avais rien posté, alors je vais m'inspirer de ce que j'ai fait hier (enfin, très tôt ce matin) pour un petit exercice :)

Cet exercice est plus mathématique que lié au Pawn, enfin c'est pas grave ça vous fera du bien  :ninja

J'avais préparé une demande d'aide avant de réussir à le faire par moi-même :fier:
Donc je remet le schéma que j'avais préparé :



Le schéma était préparé pour un système de montgolfière. C'est à dire que le joueur est dans son ballon au point A.
Le ballon doit se diriger sur une distance de 5 unités (=5m) vers le FacingAngle du joueur quand celui-ci appuie sur Espace ou Majuscule selon les configs (KEY_SPRINT). C'est à dire que si le joueur est dirigé vers le nord-est, le ballon ira vers cette direction, mais il parcourra TOUJOURS 5m.
Le but est ici de calculer AC et AD pour trouver les coordonnées précises du point B.

Les fonctions qui pourraient vous être utiles :

• GetPlayerFacingAngle
• floatcos
• floatsqroot

Si vous n'avez pas encore la 0.3d, pas grave, n'hésitez pas à ne faire que l'algorithme si vous voulez ;)

Bonne chance ;)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #47 le: 30 Octobre 2011, 13:29:52 »
Comme ça ?

MoveObjectFromAngle( objectid, Float:Angle, Float:Distance )
{
new Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0;
GetObjectPos( objectid, posX, posY, posZ );
posX += Distance * -floatsin( Angle );
posX += Distance * -floatcos( Angle );
MoveObject( objectid, posX, posY, posZ, 1.0 );
}



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #48 le: 30 Octobre 2011, 13:44:36 »
Ça semble bon, moi j'ai mis beaucoup plus de lignes que ça par contre  :happy

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #49 le: 05 Novembre 2011, 21:08:12 »
Salut,

petite erreur sasuke:

posX += Distance * -floatsin( Angle );
posX += Distance * -floatcos( Angle );

Sinon c'est pas mal bon. Je ne sais pas si MoveObject retourne une valeur particulière (par exemple en cas d'objet inexistant), mais on pourrait la rendre utilisable ainsi:

MoveObjectFromAngle( objectid, Float:Angle, Float:Distance )
{
new Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0;
GetObjectPos( objectid, posX, posY, posZ );
posX += Distance * -floatsin( Angle );
posY += Distance * -floatcos( Angle );
return MoveObject( objectid, posX, posY, posZ, 1.0 );
}

sinon, tes montgolfières ne devraient pas pouvoir monter et descendre?
Pour faire un truc plus réaliste ce serait bien de faire une matrice de vents (je parle de tableau bidimensionnel bien sur) qui dépendent de la position en x et y. On pourrait ainsi imposer le déplacement en X et Y à la montgolfière comme c'est le cas en réalité.
La matrice pourrait être modifié à tous les X minutes et le joueur pourrait contrôler le bruleur de la montgolfière. Le bruleur devrait avoir un effet sur l'altitude de la montgolfière, effet retardé de quelques secondes vu le délai pour la répartition de l'air dilaté... Bref, ça devient un script intéressant.

++Sim++





Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #50 le: 12 Novembre 2011, 22:35:47 »
Salut,
Petit corrigé rapide (Sans code, l'algorithme seul était à trouver) :
Il fallait utiliser les fonction floatcos et floatsin avec le paramètre degrees (Ou Radians si vous vouliez, mais bon c'était totalement inutile...)
Après, les opérations de trigonométrie faisaient le reste : Calcul du coté BD en fonction de l'angle, et application du théorème de Pythagore pour trouver AD en fonction de AB et BD. (AD² = AB² + BD²)
Comme BD = CA, on connaît la distance du point C et du point D par rapport au point A, ce qui permet de trouver les bons paramètres de nouvelle position pour la fonction MoveObject !

++

Hors ligne WaTsoN

  • *
  • Criminel
  • Messages: 40
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #51 le: 13 Novembre 2011, 17:03:50 »
 :birthday
Freepost
« Modifié: 18 Novembre 2011, 00:51:52 par SaSuKerO »

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : [TP] Le topic à exercice ! [Version 2]
« Réponse #52 le: 18 Novembre 2011, 11:49:20 »
Et ben dit donc je vais devoir me remettre a la trigo' ça ma bien aidé merci.
Nippah !