Voila une code de teste avec différents angles, la tu a la formule à toi de jouer avec suivant l'angle que tu veux
Code : Tout sélectionner
; X,Y= le départ du point
; X2,Y2 = l'arrivée du point
OpenWindow(0,0,0,800,600,"teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(0,0,0,800,600)
StartDrawing(CanvasOutput(0))
X=400 ; le centre du canvas
Y=300 ; le centre du canvas
;Teste avec un angle de 90° sur une distance de 100 pxl en vert
X2=X+Cos(Radian(90))*100
Y2=Y+Sin(Radian(90))*100
LineXY(X,Y,X2,Y2,$00FF00)
;Teste avec un angle de 30° sur une distance de 100 pxl en rouge
X2=X+Cos(Radian(30))*100
Y2=Y+Sin(Radian(30))*100
LineXY(X,Y,X2,Y2,$0000FF)
;Teste avec un angle de 60° sur une distance de 100 pxl en bleu
X2=X+Cos(Radian(60))*100
Y2=Y+Sin(Radian(60))*100
LineXY(X,Y,X2,Y2,$FF901E)
;Teste avec un angle de 45° sur une distance de 100 pxl en maron
X2=X+Cos(Radian(45))*100
Y2=Y+Sin(Radian(45))*100
LineXY(X,Y,X2,Y2,$3F85CD)
StopDrawing()
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
Donc en gros pour ton jeu tu calcul la nouvelle position comme suit
positionX=positionX+Cos(Radian(Angle_du_vaiseau))*Distance_a_parcourir_a_chaque_cycle
positionY=positionY+Sin(Radian(Angle_du_vaiseau))*Distance_a_parcourir_a_chaque_cycle
Et tes vaisseaux ennemi se déplaceront suivant un angle donné, n'oublie pas non plus de faire un RotateSprite(#Sprtie,Angle) pour que ton sprite donne une impression de réalisme
Maintenant il est également possible de faire en sorte que le vaisseau ennemi vise le vaisseau du joueur, mais je ne sais pas si c'est ton souhait.
Note: pour les jeux ce genre de formule est indispensable