Problème camera, vie, IA, Monde Rond et tir tous en 3D
j'ai un exemple de tir dans cette archive (pivotchar.pb)
http://herved25.free.fr/test/Demo3D.zip
J'espère que ça t'aidera à avancer dans ton projet.
http://herved25.free.fr/test/Demo3D.zip
J'espère que ça t'aidera à avancer dans ton projet.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
-
- Messages : 130
- Inscription : dim. 11/janv./2009 15:04
Oui merci j'ai bien avancer dans mon projet il ne manque a ma base que les collision et l'apesanteur tous ça grâce a Dreamotion (J'utilise un des exemple pour le transformer en se que je veut). Aussi j'ai un problème de rotation avec un personnage :
Je voudrait que quand j'appuie sur la touche droite (ou gauche) il tourne sur lui même comme dans les jeux pour voir le personnage or tous ce qu'il fait c'est un angle de je ne c'est combien de degré . Aidé moi s'il vous plait. Au faite après quand j'aurai fini tout ceci, et bien je pourrait fait mon éditeur de carte 3d et je vous le donnerai et vous ferez un avis dessus d'accord ?
Code : Tout sélectionner
; ------------------------------------------------------------
; DreaMotion3D
;
; Exemple : AnimX
; Historique :
; 18/09/06 00:00 DreaMotion3D Team
; 10/02/07 19:16 TMyke
;
; ------------------------------------------------------------
; Include files
IncludePath "Include\" : IncludeFile "dreamotion3d.pbi"
;EnableExplicit
Declare FrameFind( *pframe.D3DXFRAME , *frame.D3DXFRAME)
; Globales
Global anglex.f, angley.f, flagXDown.w
Global mox.f, omx.f, moy.l, omy.l
Global *camera.CEntity
Global *land.CEntity
Global Dim *tiny.CAnimX(30)
Global *cube.CMesh
Global *font.CFont
Global val.l,Quit.b
Global i.l, flag.l
Global tab.l=0, *tFrame.D3DXFRAME
DM_InitPhysic()
; Init PB modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; set graphic window 3D
*app = DM_Graphics3D(800,600, 32, 0, 1)
;load font
*font = DM_LoadFont( "Tahoma",9 , 0)
DM_TextColor (*font, 198,198,198,255)
; change directory for media
SetCurrentDirectory("media/")
; Set lights
DM_AmbientLight(150, 150, 150)
DM_CreateLight(3)
; ---------------------------------------
; meshs
; ---------------------------------------
; Charge le sol
*land = DM_LoadMesh("land.x")
*tiny(0) = DM_LoadAnimMesh("bones_all.x")
DM_ScaleEntity(*tiny(0), 13,13,13)
DM_AnimateSpeed(*tiny(0), 0.01)
DM_MoveEntity(*tiny(0), -50,10,-300.0)
DM_RotateEntity(*tiny(0), 0,20,0)
;Debug DM_AnimFrameName(*tiny(0)\ g_pFrameRoot)
;Debug "-------"
;FrameFind( *tiny(0)\ g_pFrameRoot, #Null)
; ---------------------------------------
; create camera
; ---------------------------------------
*camera = DM_CreateCamera()
DM_MoveEntity(*camera, -14,10,-200) ; valeur initiale -34,25,-250 : nouvelle configuration -14,10,-200
DM_TurnEntity(*camera, 0,200,0)
DM_CameraClsColor(*camera, 125, 125, 125)
;if full screen...
;change_curseur( #IDC_ARROW )
; ---------------------------------------
; main loop
; ---------------------------------------
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
; if Escape Key, exit
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
EndIf
; change animation on Tiny 5
If KeyboardReleased(#PB_Key_Up)
DM_AnimateIndex(*tiny(0), 0)
EndIf
If KeyboardPushed(#PB_Key_Up)
DM_AnimateIndex(*tiny(0), 1)
EndIf
If KeyboardReleased(#PB_Key_Down)
DM_AnimateIndex(*tiny(0), 0)
EndIf
If KeyboardPushed(#PB_Key_Down)
DM_AnimateIndex(*tiny(0), 1)
EndIf
If KeyboardPushed(#PB_Key_Down)
DM_MoveEntity(*tiny(0), 0,0,4)
EndIf
If KeyboardPushed(#PB_Key_Up)
DM_MoveEntity(*tiny(0), 0,0,-4)
EndIf
[color=red] If KeyboardPushed(#PB_Key_Right)
DM_RotateEntity(*tiny(0), 0,4000,0)
EndIf
If KeyboardPushed(#PB_Key_Left)
DM_RotateEntity(*tiny(0), 0,-4000,0)
EndIf[/color]
If KeyboardReleased(#PB_Key_B) : flag=11 : EndIf
If KeyboardReleased(#PB_Key_N) : flag=0 : EndIf
; move camera with dir key and mouse (left click)
If KeyboardPushed(#PB_Key_Up)
DM_MoveEntity(*camera, 0,0,4)
DM_PointEntity(*camera, *tiny(0))
ElseIf KeyboardPushed(#PB_Key_Down)
DM_MoveEntity(*camera, 0,0,-4)
DM_PointEntity(*camera, *tiny(0))
EndIf
If KeyboardPushed(#PB_Key_Left)
DM_MoveEntity(*camera, -4,0,0.16)
DM_PointEntity(*camera, *tiny(0))
ElseIf KeyboardPushed(#PB_Key_Right)
DM_MoveEntity(*camera, 4,0,0.16)
DM_PointEntity(*camera, *tiny(0))
EndIf
If MouseButton(#PB_MouseButton_Left)
If flagXDown=0
omx = MouseX()
omy = MouseY()
flagXDown=11
Else
moy = MouseY()-omy
angley=(0)
omy= MouseY()
mox = MouseX()-omx
anglex=(mox/5.0)
omx= MouseX()
DM_TurnEntity(*tiny(0), angley,anglex,0)
DM_TurnEntity(*camera, angley,anglex,0)
EndIf
Else
flagXDown=0
EndIf
DM_UpdatePhysic()
; ---------------
; Render
; ---------------
If flag=0 : DM_UpdateWorld() : EndIf
DM_BeginScene()
DM_RenderWorld(*camera)
; draw texte
DM_DrawText(*font, 10, 15, "FPS : "+Str(DM_FPS()))
DM_DrawText(*font, 10, 30, "F1/F2/F3/F4 : index of animate's tiny1")
DM_EndScene()
Until Quit=1
DM_ClearGraphics()
End
Procedure FrameFind( *pframe.D3DXFRAME , *frame.D3DXFRAME)
Protected a$
a$=Space(tab)
Repeat
*frame = DM_AnimateGetChild(*tiny(0), *pframe, *frame)
If *frame
Debug a$+DM_AnimFrameName(*frame)
tab+3
FrameFind(*frame, #Null)
EndIf
Until *frame=#Null
tab-3
EndProcedure
; IDE Options = PureBasic v4.00 (Windows - x86)
; CursorPosition = 69
; FirstLine = 53
Bigre,
Si tu commences à 14 ans, sans enfants à t'occuper, sans courses à faire, sans ménage, sans mur qui s'écroule (hein Stephou)....tu devrais pouvoir au moins dégager entre 20 et 30 heures par jour pour tes loisirs
.
Bon, tu n'as pas la chance d'etre obligé de rester à l'interieur l'hiver vu que tu habites à la Réunion...mais tu peux emmener un portable sur la plage pour après le surf et dans ton sac à dos pendant les pauses rando à l'interieur des terres...
Donc avec tout ça et avec l'excellent PureBasic et son Forum, tu devrais pouvoir réussir à faire quelque chose très bientôt...mais commence par un projet plus modeste : à ton age, je commençais à me faire la main sur la production de démo ou d'intro. Je pense que c'est une bonne école car ça permet d'aborder la technicité en programmation sans se préoccuper de la jouabilité d'un jeu (un point essentiel surement plus difficile à réaliser que la technique et qui est souvent délaissé ou négligé).
Bon courage pour la suite
Je ne pourrai hélas point t'aider pour les aspects techniques, je suis naze en 3D
Si tu commences à 14 ans, sans enfants à t'occuper, sans courses à faire, sans ménage, sans mur qui s'écroule (hein Stephou)....tu devrais pouvoir au moins dégager entre 20 et 30 heures par jour pour tes loisirs

Bon, tu n'as pas la chance d'etre obligé de rester à l'interieur l'hiver vu que tu habites à la Réunion...mais tu peux emmener un portable sur la plage pour après le surf et dans ton sac à dos pendant les pauses rando à l'interieur des terres...
Donc avec tout ça et avec l'excellent PureBasic et son Forum, tu devrais pouvoir réussir à faire quelque chose très bientôt...mais commence par un projet plus modeste : à ton age, je commençais à me faire la main sur la production de démo ou d'intro. Je pense que c'est une bonne école car ça permet d'aborder la technicité en programmation sans se préoccuper de la jouabilité d'un jeu (un point essentiel surement plus difficile à réaliser que la technique et qui est souvent délaissé ou négligé).
Bon courage pour la suite
Je ne pourrai hélas point t'aider pour les aspects techniques, je suis naze en 3D

Only PureBasic makes it possible
-
- Messages : 130
- Inscription : dim. 11/janv./2009 15:04
lol, tu me fait rire , on ne surf pas en Guadeloupe il n'y a pas les vague qu'il faut pour faire 9a mais je préfère passer ma vie a programmer mon jeu en 3d que passer par la case quelle sont les autre programmation que l'on peut faire avec pure basic ou autre. Ta demo ne fonctionne pas comtois , et pour mon problème de pivotage ,quelqu'un a trouver la solution ???
[edit] j'ai compris que il me fallait la version 4.30 pour faire fonctionner ton programme , lol
[edit] j'ai compris que il me fallait la version 4.30 pour faire fonctionner ton programme , lol
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Hmmm, je pense un peu comprendre mais pas sûr quand même comme dirait l'autre.guerrier001 a écrit : Je voudrait que quand j'appuie sur la touche droite (ou gauche) il tourne sur lui même comme dans les jeux pour voir le personnage or tous ce qu'il fait c'est un angle de je ne c'est combien de degré . Aidé moi s'il vous plait. Au faite après quand j'aurai fini tout ceci, et bien je pourrait fait mon éditeur de carte 3d et je vous le donnerai et vous ferez un avis dessus d'accord ?
Tu essaye de faire un systeme de camera dynamique 3° personne un peu comme dans Tom Raider, je suppose, non ?
Quel est l'action exacte que tu attends de la camera quand tu commande une rotation de ton perso à droite ou
à gauche ?
A+

Force et sagesse...
-
- Messages : 130
- Inscription : dim. 11/janv./2009 15:04
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Une des meilleurs solution a mon sens est d'employer les parenté. Tu asservis ta
camera à ton mesh animé. Elle suivra donc complètement les movements de ton personnage.
voici à partir de ton code du dessus une partie modifié pour en montrer le mécanisme:
(la clé se trouve sur la ligne *camera = DM_CreateCamera... et j'ai homis les touches liées à
l'animation pour pas surcharger.)

camera à ton mesh animé. Elle suivra donc complètement les movements de ton personnage.
voici à partir de ton code du dessus une partie modifié pour en montrer le mécanisme:
(la clé se trouve sur la ligne *camera = DM_CreateCamera... et j'ai homis les touches liées à
l'animation pour pas surcharger.)

Code : Tout sélectionner
...
; ---------------------------------------
; create camera
; ---------------------------------------
*camera = DM_CreateCamera(800,600,*tiny(0))
DM_MoveEntity(*camera, 0,1,4) ; valeur initiale -34,25,-250 : nouvelle configuration -14,10,-200
DM_TurnEntity(*camera, 0,180,0)
DM_CameraClsColor(*camera, 125, 125, 125)
;if full screen...
;change_curseur( #IDC_ARROW )
; ---------------------------------------
; main loop
; ---------------------------------------
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
; if Escape Key, exit
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
EndIf
If KeyboardPushed(#PB_Key_Down)
DM_MoveEntity(*tiny(0), 0,0,4)
EndIf
If KeyboardPushed(#PB_Key_Up)
DM_MoveEntity(*tiny(0), 0,0,-4)
EndIf
If KeyboardPushed(#PB_Key_Right)
DM_TurnEntity(*tiny(0), 0,0.5,0)
EndIf
If KeyboardPushed(#PB_Key_Left)
DM_TurnEntity(*tiny(0), 0,-0.5,0)
EndIf
....
Force et sagesse...
Petite parenthèse !
Au fait, il y a quand même des épreuves aux niveaux national et mondial en surf (spot de Damencourt au Moule par exemple !). Il y a même des champions de France dans les petites catégories !!!!lol, tu me fais rire , on ne surfe pas en Guadeloupe

Bonne continuation !
-
- Messages : 130
- Inscription : dim. 11/janv./2009 15:04
-
- Messages : 130
- Inscription : dim. 11/janv./2009 15:04
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Le code que j'ai fournis plus haut asservi la camera au personnage, et donc elle tourne
à la même vitesse si tu l'as bien retranscrit. Après effectivement, pour plus de réalisme,
il faut ajouter un effet de souplesse avec un ralentissement dans les mouvement,
avec un rattrape sur le personnage ensuite. Mais je pense qu'avec un peu d'imagination
tu devrais y a arriver...
à la même vitesse si tu l'as bien retranscrit. Après effectivement, pour plus de réalisme,
il faut ajouter un effet de souplesse avec un ralentissement dans les mouvement,
avec un rattrape sur le personnage ensuite. Mais je pense qu'avec un peu d'imagination
tu devrais y a arriver...

Force et sagesse...
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
avec la 4.30, chuis un beau boulet
moi et le 3D, çà fait 2, mais même si je n'arrive plus à afficher un gadget, je... hey! mais attend ! ne fuis pas ! reviens !guerrier001 a écrit :le perso tourne bien mais c'est la camera tourne plus vite que le perso et je veut qu'il ralentie
bon, un conseil, apprend d'abord à manipuler les sprites et la bibliothèque des liste chainées aussi.