Balistique encore un petit coup !

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Balistique encore un petit coup !

Message par Thyphoon »

ça fait quelques temps que j'étudie un peu tout les codes parlant de balistique sur ce forum
Et j'ai un petit souci.
je voudrais pouvoir calculer sa position non pas depuis l'écart de temps (lancement du projectile et maintenant) mais depuis l'écart de temps (dernier calcule de position et maintenant) :P
Je sais pas si je suis claire.

est ce quelqu'un a une idée ? Merci d'avance

Code : Tout sélectionner

Structure Projectile
X.f
Y.f
Force.f
Angle.f
Time.l
EndStructure

Global NewList Projectile.Projectile()

Procedure AddProjectile(X.l,Y.l,Force.l,Angle.l)
  AddElement(Projectile())
  Projectile()\X=X
  Projectile()\Y=Y
  Projectile()\Force=Force
  Projectile()\Angle=Angle
  Projectile()\Time=ElapsedMilliseconds()
EndProcedure


AddProjectile(0,300,20,-45)
DeltaTime.f=0
If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf

If OpenWindow(0,0,0,800,600,"A screen in a window... using gadget and sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
EndIf
Repeat
  Event.l = WindowEvent()     
   FlipBuffers()       ; Inverse the buffers (the back become the front (visible)... and we can do the rendering on the back
    ExamineKeyboard()


 DeltaTime=(ElapsedMilliseconds()-Projectile()\Time)/100
 Projectile()\X = Projectile()\Force * (Cos(Projectile()\Angle * 0.0174533) * DeltaTime) + Projectile()\X
 Projectile()\Y = (9.81 / 2 * DeltaTime * DeltaTime) + (Projectile()\Force * Sin(Projectile()\Angle * 0.0174533) * DeltaTime) + Projectile()\Y
 StartDrawing(ScreenOutput())
 Circle(Projectile()\X,Projectile()\Y,10,#Red)
 StopDrawing()
 Delay(1)
        
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)

End  
:
Anonyme

Message par Anonyme »

Code : Tout sélectionner

;Calcul de la position courante (CurrentX & CurrentY)

DiffX = CurrentX - OldX
DiffY = CurrentY - OldY

OldX = CurrentX
OldY = CurrentY
j'vois ca comme ca :D
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Cpl.Bator a écrit :

Code : Tout sélectionner

;Calcul de la position courante (CurrentX & CurrentY)

DiffX = CurrentX - OldX
DiffY = CurrentY - OldY

OldX = CurrentX
OldY = CurrentY
j'vois ca comme ca :D
merci pour la reponse. je vais essayer ça dans la journée. Désolé pour le temps de reponse mais j'étais coincé a l'hospital car mon fils a fait un malaise a l'école hier matin... Et c'est incroyable mais y a pas de wifi dans l'hospital :wink:
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Heuuuuu je comprends pas tres bien ce que tu essais de m'expliquer !
part rapport au code que j'ai posté je comprends pas bien..cette histoire de distance alors que c'est un problème de temps qui me gène. Bon je veux bien que ce soit lié...mais j'ai pas du saisir le tenant de l'aboutissant
Anonyme

Message par Anonyme »

faut dire que tu n'est pas clair non plus :
je voudrais pouvoir calculer sa position non pas depuis l'écart de temps mais depuis l'écart de temps
:D
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Cpl.Bator a écrit :faut dire que tu n'est pas clair non plus :
je voudrais pouvoir calculer sa position non pas depuis l'écart de temps mais depuis l'écart de temps
:D
lollllllllll c'est claire que c'est pas terrible (mais ta aussi retirer mes parenthèses...)

Je vais essayer d'expliquer ça un peu mieux

actuellement dans mon programme la variable DeltaTime represente le temps depuis le lancement du projectile. Or je voudrais faire en sorte que DeltaTime sois le temps écoulé depuis la dernière fois ou on a dessiné le projectile.

est ce que c'est mieux là ? :P
Anonyme

Message par Anonyme »

Code : Tout sélectionner

DifferenceDeTemps = DeltaTime - OldDeltaTime 

OldDeltaTime = DeltaTime 
Le code du haut c'est la même chose , mais nommé différemment ^^
Répondre