Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| UN CHATEAU EN 3D | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: UN CHATEAU EN 3D Jeu 24 Nov 2011 - 22:31 | |
| UN CHATEAU FORT Bon, je vous livre un petit programme encore en 3d que j'ai fait il y a environ 1 mois, et qui affiche un chateau-fort, purement sorti de mon imagination. Ci_joint, le fichier zip avec les images du skybox, les textures et les fichiers 3ds que vous aurez soin de copier dans le répertoire c:\castle ou dans tout autre répertoire de votre choix, mais là il faudra changer le chemin dans le prog des fichiers texture et 3ds. Jicehel, je pense que cela aurait pu servir pour votre jeu collaboratif dont le projet est en suspend, ou bien vous l'avez définitivement abandonné? Même le labyrinthe devrait pouvoir s'insérer à l'intérieur des murailles. Qu'en penses-tu? http://www.megaupload.com/?d=0N2NPWY9 - Code:
-
dim bh,i,j,rot,scd,vd,vrot,txt$:label fin,pers,bloque width 0,screen_x:height 0,screen_y:border_hide 0 txt$="Patientez, chargement en cours..." font_size 0,30:font_bold 0:font_color 0,255,0,0 print_locate screen_x/2-text_width(txt$,0)/2,screen_y/2-3*text_height(txt$,0)/2:print txt$ scene3d 1:hide 1:full_space 1:cursor_hide 1 3d_skybox 1:3d_load_texture_bottom 1,"C:\castle\sk6.bmp":3d_load_texture_top 1,"C:\castle\sk3.bmp":3d_load_texture_front 1,"C:\castle\sk5.bmp" 3d_load_texture_back 1,"C:\castle\sk2.bmp":3d_load_texture_right 1,"C:\castle\sk1.bmp":3d_load_texture_left 1,"C:\castle\sk4.bmp" 3d_plane 2:3d_scale 2,1000,1000,1:3d_x_rotate 2,90:3d_y_position 2,-0.5:3d_load_texture 2,"C:\castle\herbe.JPG":3d_u_tile 2,400:3d_v_tile 2,400 3d_plane 3:3d_scale 3,42,42,1:3d_x_rotate 3,90:3d_position 3,0,-0.25,0:3d_load_texture 3,"C:\castle\pavé.jpg":3d_u_tile 3,10:3d_v_tile 3,10 ' LES 8 TOURS 3d_mesh 300:3d_load_object 300,"c:\castle\tr.3ds":3d_load_texture 300,"c:\castle\tr.jpg" 3d_position 300,0,0,0:3d_scale 300,40,40,31:3d_x_rotate 300,90:3d_z_rotate 300,180 3d_mesh 301:3d_load_object 301,"c:\castle\gués.3ds":3d_load_texture 301,"c:\castle\gués.bmp" 3d_position 301,0,0,0:3d_scale 301,40,40,31:3d_x_rotate 301,90:3d_z_rotate 301,180 ' LES REMPARTS j=-200:for i= 302 to 303:3d_box i,360,64,20:3d_position i,j,32,0:3d_y_rotate i,90 3d_load_texture i,"c:\castle\mur6.jpg":j=j+400:next i: ' MURS EST ET OUEST 3d_box 304,360,64,20:3d_position 304,0,32,200:3d_load_texture 304,"c:\castle\mur6.jpg": ' MUR SUD j=-120:for i=305 to 306:3d_box i,120,64,20:3d_position i,j,32,-200 3d_load_texture i,"c:\castle\mur2.jpg":j=j+240:next i: ' MURS NORD EST ET NORD OUEST j=-45:for i=307 to 308:3d_box i,60,64,20:3d_position i,j,32,-240:3d_y_rotate i,90 3d_load_texture i,"c:\castle\mur1.jpg":j=j+90:next i: ' MUR LATÉRAUX NORD EST ET NORD OUEST ' LES REMPARTS DU PORTAIL ET DE LA HERSE j=-280:for i=309 to 310:3d_box i,10,44,20:3d_position i,-15,22,j:3d_load_texture i,"c:\castle\mur3.jpg" 3d_box i+2,10,44,20:3d_position i+2,20,22,j:3d_load_texture i+2,"c:\castle\mur5.jpg" 3d_box i+4,60,20,20:3d_position i+4,0,54,j:3d_load_texture i+4,"c:\castle\mur4.jpg":j=j+80:next i ' LES CRÉNEAUX j=-157:for i=315 to 323:3d_box i,20,10,4:3d_position i,j,69,-208:3d_box i+9,20,10,4:3d_position i+9,j,69,-192 3d_box i+18,20,10,4:3d_position i+18,j,69,208:3d_box i+27,20,10,4:3d_position i+27,j,69,192 3d_box i+36,20,10,4:3d_position i+36,-208,69,j:3d_y_rotate i+36,90:3d_box i+45,20,10,4:3d_position i+45,-192,69,j:3d_y_rotate i+45,90 3d_box i+54,20,10,4:3d_position i+54,208,69,j:3d_y_rotate i+54,90:3d_box i+63,20,10,4:3d_position i+63,192,69,j:3d_y_rotate i+63,90:j=j+40:next i j=-53:for i=387 to 388:3d_box i,20,10,4:3d_position i,j,69,-240:3d_y_rotate i,90 3d_box i+2,20,10,4:3d_position i+2,abs(j),69,-240:3d_y_rotate i+2,90:3d_box i+4,20,10,4:3d_position i+4,3,69,j-235:j=j+16:next i for i=315 to 392:3d_load_texture i,"c:\castle\mur7.jpg":next i ' LA HERSE 3d_mesh 394:3d_position 394,2.5,-1,-200:3d_x_rotate 394,90:3d_load_object 394,"c:\castle\herse.3ds":3d_load_texture 394,"c:\castle\herse.bmp" ' LE PONT-LEVIS 3d_mesh 395:3d_position 395,2.5,0,-290:3d_x_rotate 395,90:3d_load_object 395,"c:\castle\pntlvs.3ds":3d_load_texture 395,"c:\castle\pntlvs.jpg" ' LES PORTES j=-10:for i=396 to 397:3d_mesh i:3d_position i,j,0,-280:3d_x_rotate i,90 3d_load_object i,"c:\castle\porte.3ds":3d_load_texture i,"c:\castle\porte.jpg":j=j+25:next i ' PROGRAMME 3d_cube 101,1:3d_mesh 102:vrot=1:vd=.5:3d_hide 101:3d_move 101,-20:i=0:j=0.25 show 1 timer 98:timer_interval 98,1:on_timer 98,pers end pers: 3d_y_position 394,i:i=i+j:if i>35 or i<0 then j=-1*j: ' MOUVEMENT DE LA HERSE 3d_x_rotate 395,90+i*2.5: ' MOUVEMENT DU PONT-LEVIS 3d_z_rotate 396,i*-2.5:3d_z_rotate 397,180+i*2.5: ' MOUVEMENT DES PORTES select scancode case 27:goto fin case 37:rot=rot+vrot:3d_y_rotate 101,rot case 39:rot=rot-vrot:3d_y_rotate 101,rot case 38:3d_move 101,vd:scd=1 case 40:3d_move 101,vd-(2*vd):scd=2 case 107:bh=bh-.025:if bh<-11 then bh=-11 case 109:bh=bh+.025:if bh>11 then bh=11 end_select
3d_position 102,o3d_x_position(101),o3d_y_position(101),o3d_z_position(101):3d_rotate 102,o3d_x_rotate(101),o3d_y_rotate(101),o3d_z_rotate(101) 3d_move 102,1:cam_position o3d_x_position(101),sin(bh/6.28)+16.5,o3d_z_position(101):point_position o3d_x_position(102),16.5,o3d_z_position(102)
' Désactivez la ligne ci dessous si vous voulez sortir à l'extérieur du chateau, mais vous passerez au travers des murs aussi! if o3d_x_position(101)<-185 or o3d_x_position(101)>185 or o3d_z_position(101)<-185 or o3d_z_position(101)>185 then gosub bloque:rem 'limites extrêmes
return bloque: if scd=1 then 3d_move 101,-1*vd if scd=2 then 3d_move 101,-1*(vd-(2*vd)) return fin: timer_off 98:terminate Soyez indulgent, c'est la première fois que j'essaye d'envoyer un fichier à télécharger, je ne sais pas si ça va marcher! Sinon dites moi comment procèder Merci à tous!!!!!!!! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: UN CHATEAU EN 3D Jeu 24 Nov 2011 - 23:27 | |
| Pour le téléchargement, c'est ok ! Sympa le chateau ! (manque un peu de mobilier quand même ) Question : On peut pas passer la herse quand elle est levée ? | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Jeu 24 Nov 2011 - 23:32 | |
| met un rem devant la ligne:
if o3d_x_position(101)<-185 or o3d_x_position(101)>185 or o3d_z_position(101)<-185 or o3d_z_position(101)>185 then gosub bloque:rem 'limites extrêmes
et tu pourras sortir du chateau et en faire le tour. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: UN CHATEAU EN 3D Ven 25 Nov 2011 - 0:45 | |
| Je viens de tester ton programme. Le résultat est vraiment sympa Je mets une version ici pour ceux qui vont mettre tous les fichiers ailleurs qu'à l'emplacement indiqué dans le source pour éviter d'avoir à le changer partout. Ca va, tu maitrise en modélisation - Code:
-
' Chateau - v1.0 - de Bignono
' Déclaration dim bh,i,j,rot,scd,vd,vrot,pas, txt$, chemin$ label fin,pers,bloque
' Initialisation width 0,screen_x:height 0,screen_y:border_hide 0
chemin$ ="": txt$="Patientez, chargement en cours..."
font_size 0,30:font_bold 0:font_color 0,255,0,0 print_locate screen_x/2-text_width(txt$,0)/2,screen_y/2-3*text_height(txt$,0)/2:print txt$
scene3d 1:hide 1:full_space 1:cursor_hide 1
3d_skybox 1:3d_load_texture_bottom 1,chemin$+"sk6.bmp":3d_load_texture_top 1,chemin$+"sk3.bmp":3d_load_texture_front 1,chemin$+"sk5.bmp" 3d_load_texture_back 1,chemin$+"sk2.bmp":3d_load_texture_right 1,chemin$+"sk1.bmp":3d_load_texture_left 1,chemin$+"sk4.bmp" 3d_plane 2:3d_scale 2,1000,1000,1:3d_x_rotate 2,90:3d_y_position 2,-0.5:3d_load_texture 2,chemin$+"herbe.JPG":3d_u_tile 2,400:3d_v_tile 2,400 3d_plane 3:3d_scale 3,42,42,1:3d_x_rotate 3,90:3d_position 3,0,-0.25,0:3d_load_texture 3,chemin$+"pavé.jpg":3d_u_tile 3,10:3d_v_tile 3,10
' LES 8 TOURS 3d_mesh 300:3d_load_object 300,chemin$+"tr.3ds":3d_load_texture 300,chemin$+"tr.jpg" 3d_position 300,0,0,0:3d_scale 300,40,40,31:3d_x_rotate 300,90:3d_z_rotate 300,180 3d_mesh 301:3d_load_object 301,chemin$+"gués.3ds":3d_load_texture 301,chemin$+"gués.bmp" 3d_position 301,0,0,0:3d_scale 301,40,40,31:3d_x_rotate 301,90:3d_z_rotate 301,180
' LES REMPARTS j=-200:for i= 302 to 303:3d_box i,360,64,20:3d_position i,j,32,0:3d_y_rotate i,90 3d_load_texture i,chemin$+"mur6.jpg":j=j+400:next i: ' MURS EST ET OUEST 3d_box 304,360,64,20:3d_position 304,0,32,200:3d_load_texture 304,chemin$+"mur6.jpg": ' MUR SUD j=-120:for i=305 to 306:3d_box i,120,64,20:3d_position i,j,32,-200 3d_load_texture i,chemin$+"mur2.jpg":j=j+240:next i: ' MURS NORD EST ET NORD OUEST j=-45:for i=307 to 308:3d_box i,60,64,20:3d_position i,j,32,-240:3d_y_rotate i,90 3d_load_texture i,chemin$+"mur1.jpg":j=j+90:next i: ' MUR LATÉRAUX NORD EST ET NORD OUEST
' LES REMPARTS DU PORTAIL ET DE LA HERSE j=-280:for i=309 to 310:3d_box i,10,44,20:3d_position i,-15,22,j:3d_load_texture i,chemin$+"mur3.jpg" 3d_box i+2,10,44,20:3d_position i+2,20,22,j:3d_load_texture i+2,chemin$+"mur5.jpg" 3d_box i+4,60,20,20:3d_position i+4,0,54,j:3d_load_texture i+4,chemin$+"mur4.jpg":j=j+80:next i
' LES CRÉNEAUX j=-157:for i=315 to 323:3d_box i,20,10,4:3d_position i,j,69,-208:3d_box i+9,20,10,4:3d_position i+9,j,69,-192 3d_box i+18,20,10,4:3d_position i+18,j,69,208:3d_box i+27,20,10,4:3d_position i+27,j,69,192 3d_box i+36,20,10,4:3d_position i+36,-208,69,j:3d_y_rotate i+36,90:3d_box i+45,20,10,4:3d_position i+45,-192,69,j:3d_y_rotate i+45,90 3d_box i+54,20,10,4:3d_position i+54,208,69,j:3d_y_rotate i+54,90:3d_box i+63,20,10,4:3d_position i+63,192,69,j:3d_y_rotate i+63,90:j=j+40:next i j=-53:for i=387 to 388:3d_box i,20,10,4:3d_position i,j,69,-240:3d_y_rotate i,90 3d_box i+2,20,10,4:3d_position i+2,abs(j),69,-240:3d_y_rotate i+2,90:3d_box i+4,20,10,4:3d_position i+4,3,69,j-235:j=j+16:next i for i=315 to 392:3d_load_texture i,chemin$+"mur7.jpg":next i
' LA HERSE 3d_mesh 394:3d_position 394,2.5,-1,-200:3d_x_rotate 394,90:3d_load_object 394,chemin$+"herse.3ds":3d_load_texture 394,chemin$+"herse.bmp"
' LE PONT-LEVIS 3d_mesh 395:3d_position 395,2.5,0,-290:3d_x_rotate 395,90:3d_load_object 395,chemin$+"pntlvs.3ds":3d_load_texture 395,chemin$+"pntlvs.jpg"
' LES PORTES j=-10:for i=396 to 397:3d_mesh i:3d_position i,j,0,-280:3d_x_rotate i,90 3d_load_object i,chemin$+"porte.3ds":3d_load_texture i,chemin$+"porte.jpg":j=j+25:next i
' PROGRAMME 3d_cube 101,1:3d_mesh 102:vrot=1:vd= 1:3d_hide 101:3d_move 101,-20:i=0:j=0.25 show 1 timer 98:timer_interval 98,1:on_timer 98,pers end
pers: 3d_y_position 394,i:i=i+j:if i>35 or i<0 then j=-1*j: ' MOUVEMENT DE LA HERSE 3d_x_rotate 395,90+i*2.5 : ' MOUVEMENT DU PONT-LEVIS 3d_z_rotate 396,i*-2.5:3d_z_rotate 397,180+i*2.5: ' MOUVEMENT DES PORTES select scancode case 27:goto fin :' Esc pour quitter case 37:rot=rot+vrot:3d_y_rotate 101,rot :' <- tourne à gauche case 39:rot=rot-vrot:3d_y_rotate 101,rot :' -> tourne à droite case 38:3d_move 101,vd:scd=1 :' ^ avance case 40:3d_move 101,vd-(2*vd):scd=2 :' v recule case 107:bh=bh-.025:if bh<-11 then bh=-11 :' - change angle vue case 109:bh=bh+.025:if bh>11 then bh=11 :' + change angle vue end_select
3d_position 102,o3d_x_position(101),o3d_y_position(101),o3d_z_position(101):3d_rotate 102,o3d_x_rotate(101),o3d_y_rotate(101),o3d_z_rotate(101) 3d_move 102,1:cam_position o3d_x_position(101),sin(bh/6.28)+16.5,o3d_z_position(101):point_position o3d_x_position(102),16.5,o3d_z_position(102)
' Désactivez la ligne ci dessous si vous voulez sortir à l'extérieur du chateau, mais vous passerez au travers des murs aussi! if o3d_x_position(101)<-185 or o3d_x_position(101)>185 or o3d_z_position(101)<-185 or o3d_z_position(101)>185 then gosub bloque:rem 'limites extrêmes
return
bloque: if scd=1 then 3d_move 101,-1*vd if scd=2 then 3d_move 101,-1*(vd-(2*vd)) return
fin: timer_off 98:terminate | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: UN CHATEAU EN 3D Sam 26 Nov 2011 - 14:27 | |
| C'est spectaculaire, en si peu de lignes ! Une bonne habitude (c'est ce qu'a fait Jicehel je crois) c'est de mettre en tête dans une variable le chemin d'accès des fichiers, pour ne pas avoir à changer partout dans le code avec les risques que ça comporte.
Sinon c'est vrai que ça ouvre des perspectives, dans tous les sens du terme ! | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Lun 28 Nov 2011 - 21:54 | |
| Bonjours bignono et félicitation, j'était de passage pour voir les nouvelles et chapeau! tu ma donner envie de reprendre la 3D et panoramic que j'ai mie un peu de côté c'est temps-ci!
Si ça t’intéresse, je connait quelque truc pour, par exemple, utiliser plusieurs touches en même temps et un meilleur système de collision. Il est rare de voir des personnes porter sur la 3D. Bonne continuations | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Lun 28 Nov 2011 - 23:41 | |
| Je te remercie. Je m'interresse beaucoup à la 3d et je suis toujours preneur pour les trucs surtout si ça me simplifie les choses. Je ne sais pas si tu as vu le sujet du labyrinthe (lancé par Nicolas) que j'ai réalisé. Je suis parti d'un simple générateur de labyrinthe, j'ai fait un labyrinthe en 2d, puis en 3d. Jicehel et Nardo m'ont corrigé mes bugs et erreurs de programmation. Maintenant, je travaille toujours sur le labyrinthe et je vais l'intégrer dans le chateau en 3d avec l'entrée et la sortie qui auront des portes une herse et un pont levis.
A bientôt! | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: UN CHATEAU EN 3D Mar 29 Nov 2011 - 10:48 | |
| super, ça fait plaisir de voir de la 3D. | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Ven 2 Déc 2011 - 21:37 | |
| RE, Comme promit la gestion de plusieurs touche en même temps: - Code:
-
' Utilisez les touches fléchés full_space 0 label prog , touche_enfoncer , touche_lacher dim touche_gauche , touche_haut , touche_droit , touche_bas : ' déclaration de tes touches dim vitesse vitesse=0.03 scene3D 1 : full_space 1 : color 1,0,0,255 3d_cube 1,1 : 3d_rotate 1,0,45,0 timer 2 : timer_interval 2,1 : on_timer 2,prog on_key_down 0,touche_enfoncer : ' evenement si on enfonce une touche on_key_up 0,touche_lacher : ' evenement si on lache une touche end
prog: if key_down_code=27 : ' quitter timer_off_all terminate end_if
if touche_haut=1 : ' si touche haut alors... c'est ici !!! 3d_move 1,vitesse end_if if touche_bas=1 3d_move 1,0-vitesse end_if if touche_gauche=1 3d_y_rotate 1,o3d_y_rotate(1)+2 end_if if touche_droit=1 3d_y_rotate 1,o3d_y_rotate(1)-2 end_if return
' ci-dessous permet de verrifier si la touche a été enfoncer, ' la variable prend alors 1 comme valeur si elle est enfoncer touche_enfoncer: if key_down_code = 37 then touche_gauche=1 if key_down_code = 38 then touche_haut=1 if key_down_code = 39 then touche_droit=1 if key_down_code = 40 then touche_bas=1 return
' ci-dessous permet de verrifier si la touche a été lacher, ' la variable prend alors 0 comme valeur touche_lacher: if key_up_code = 37 then touche_gauche=0 if key_up_code = 38 then touche_haut=0 if key_up_code = 39 then touche_droit=0 if key_up_code = 40 then touche_bas=0 return Il faut utiliser les touches fléché En effet on peut ici appuyer sur 2 touches en même temps, voir plus et il fait ce qu'on lui demande. Si tu n'a pas comprit je peut t'aider alors n’hésite pas. Bon courage @bientot | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Sam 3 Déc 2011 - 9:36 | |
| Bonjour Jimx78, Je te remercie pour ce code très interressant, mais je connaissais déjà. D'ailleurs j'ouvre un autre post à ce sujet. | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Lun 5 Déc 2011 - 19:17 | |
| | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Mar 6 Déc 2011 - 0:06 | |
| bonsoir jimx78 Par contre, je crois que tu m'avais parlé d'un meilleur système de collision. Ça , ça m'interresse!! | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 21:10 | |
| Ok très bien pour les collision. je résume: Pour le moment, mon code fonctionne comme si tu joué a n'importe quel jeu mais il ce trouvent que plus il y a d'objet a vérifier la collision, plus le programme rame. En claire en ce moment on sent un ralentissement a partir de 30 objets seulement! Donc je suis en phase de réflexion pour chercher les collisions par petite zone dans une map. En gros d'optimiser encore plus.
Remarque: TOONIC Game Maker est ÉNORMÉMENT plus rapide mais j'y comprend vraiment rien. Il aurai certainement permis des truc de ouf.
Je t’enverrai mon code très bientôt, le temps de préparer tout ça et de le mettre sur le net. Peut'être même ce soir ou au pire ce WeekEnd
Je reviens | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 21:16 | |
| - Citation :
- TOONIC Game Maker est ÉNORMÉMENT plus rapide mais j'y comprend vraiment rien.
Ce n'est qu'une pré-version et il manque des exemples et des tutoriels pour l'utiliser au mieux de ses capacités. | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 22:14 | |
| bonsoir Jack, Je me souviens que c'est une version alpha^^ Je ne doute absolument pas que toonic va devenir quelque chose de grand plus tard. Le problème est que j'ai réussi a faire quelque chose, je comprend le but de beaucoup des commandes proposer mais arrive a peine a utiliser 5% des commandes. La base de mes programme sont sur des timers mais il y en a pas encore. De plus, (heureusement mais malheureusement)le fonctionnement des objet 3D est mieux (ID) mais je m'y retrouve pas du tout. En attendent, j utilise panoramic pour la 3D qui est très convenable pour le moment. car je m'y retrouve tout simplement^^ Bon courage pour la suite. bignono: Bon pour le moment je n'ai que mon code mais il est IMPOSSIBLE de le comprendre. je ferai un code d'exemple juste pour la collision. je vais aussi expliqué le raisonement qui est simple en plus! POUR le code:- la souris pour la vue, clique droit pour sauté
touche fléché pour le déplacement.
- F2 pour désactiver la collision
- si tu a un pavé numérique: 0 c'est aussi pour sauté
- 4,6,2 sont pour regarder autour de toi (exemple 2 pour regarder derrière toi)
- ENTER pour la vue 3ème personne (c'est une teapot je sais, drôle de perso )
- 3 pour la vue a la 1er personne (par default)
Voir le Fichier : TEST_COLLISON_jimx8.zipJe reviendrait mais pas ce soir A bientôt
Dernière édition par jimx78 le Mer 7 Déc 2011 - 22:29, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 22:15 | |
| Jack, n'oublies pas e demander 2 clones sur ta liste pour le Père Noël Jimx78, si tu as le temps, pourrais tu regarder un peu mon programme (basé sur celui de bignono) pour voir comment toi tu l'optimiserais ? (Là, j'ai modifié l'ecran de combat, je vais partager le source, il n'y a pas beaucoup de changements, mais c'est plus joli (enfin je trouve), j'intègre encore en test des objets 3D pour le moment (des monstres principalement pour le moment pour me faire la bibliothèque de monstres) après, j’attaquerais les objets et il faut que je vois comment je peux les implémenter facilement. J'hésite entre la génération aléatoire façon bignono et son labyrinthe (ce qui sera sans doute la solution dans un premier temps) et la sauvegarde de salle avec position des objets dans un donjon fixe, ce qui sera vraiment l'équivalent de "niveaux". Tiens d'ailleurs à ce propos, sur le principe retenu par bignono, comment faire simplement des textures différentes sur les 2 faces d'un mur et éventuellemnt sur les tranches ? (Et oui, je suis vraiment newbie en 3D et sans le programme de bignono, je ne me serais jamais lancé dedans ^^) | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 22:55 | |
| Salut jimx78, Merci pour le fichier zip que je viens de regarder vite fait, Ça ma l'air très hard à comprendre ton code, mais je vais essayer. A première vue c'est plus complexe qui n'y parait. J'en ai pour un bon moment pour décortiquer ça! Chapeau bas! | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 22:58 | |
| Salut Jicehel, Pas de problème, envoie ton code et je verrai si je peut faire quelque chose^^ Bon pour revenir au fonctionnement de la collision, j'utilise des cubes (6) qui suivent la position d'un objet (ton personnage)Ce qui suis est exécuté tout le temp: La position d'un cube prend la même position que l'objet personnage mais il est décaler sur un axe Pareil avec un autre cube mais dans l'autre sens et ceci pour tout les axes! voir ci_dessous Ceci pour encercler ton personnage. dans le code, la collision des 6 cubes est comparer a tout les objets qu'il faut empêché la collision. A chaque objet rajouté, il y a 6 test de plus Plus loin dans le code, si une collision est détecté, (grâce a 6 cubes on sais c'est quel axe et le sens) je déplace le personnage a l'opposer d'un des 6 cubes qui a eu la collision et donc (1-1=0) il s'arrete d'avancer dans cette axe. Je ferrai un exemple bientôt RE a 23h05 bignono, cela ne sert a rien d'essayer de comprendre la collision dans le code d'exemple. C'est impotible. imagine que c'est pas vraiment comme expliqué ci_dessus Moi, dans mon code c'est TRES optimiser pour la rapidité d'execution et donc pas pour comprendre. j'expliquerai comment j'en suis arriver a ce code mais pas maintenant, plus tard. (ca c'est complexe) | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 23:19 | |
| Ok j'attendrai plus tard. Fallait y penser aux 6 cubes sur chaque axe! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 23:34 | |
| bon je suis trop fatigué ce soir, les enfants m'ont épuisé aujourd'hui. Je bute sur un problème dans un prog et pas de solution à l'horizon. On verra demain. Bonsoir tout le monde! | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Mer 7 Déc 2011 - 23:51 | |
| Bonsoir a demain | |
| | | jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: UN CHATEAU EN 3D Dim 11 Déc 2011 - 16:58 | |
| Bonsoir, excuser moi mon retard. Je me suis perdu en essayant de refaire mon code proprement et je vient d’abandonner ce code. J'ai donc ici un code qui permet de comprendre le fonctionnement de l'anti_collision. TOUT les commentaires écrit dans le code par l’apostrophe ' sont obligatoire a lire pour comprendre le fonctionnement de la collision. ( A ne pas lire= commentaire rem) Aide: La dlist 3 contient tout les NUMERO des objets 3D a éviter la collision avec le perso Il y a 6 cubes qui encercle le perso (le 7eme sert pour le sautmais c'est hors sujet) >les touches fléché pour le déplacement >la touche 0 pour sauté >les touches + et - pour monter et descendre Bon courage - Code:
-
error_french label programme , touche_enfoncer , touche_lacher , actualiser_vue , quitter dim touche_gauche , touche_haut , touche_droit , touche_bas , touche_espace , touche_0_pn , touche_plus_pn , touche_moins_pn dim vitesse_rotation , vitesse_deplacement , i dim numero_objet_collision , nombre_total_objet_collision dim saut_ok , collision_camera_sol , saut_en_cours , hauteur_origine_camera , collision_camera , boucle_saut , tombe_ok rem PROGRAMME PRINCIPALE########################################################## dlist 3 vitesse_rotation=2 vitesse_deplacement=0.02 Full_space 0 scene3D 2 : full_space 2 : color 2,0,0,255 3D_cube 1,1 : ' creation du cube pour la camera 3d_cube 2,1 : ' creation du cube pour le point de visee ' creation des 6 cubes autour du perso:aaaaaaaaaaaaaaaaaaaaaa 3D_cube 3,0.4 3D_cube 4,0.4 3D_cube 5,0.4 3D_cube 6,0.4 3D_cube 7,0.4 3D_cube 8,0.4 ' jusque la aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3D_cube 9,0.5 3D_cube 10,1
3d_position 1,1.2,2,0.3
3d_box 12,5,3.5,1.5 3D_collision_as_cube 12 3d_y_rotate 12,-30 3d_position 12,-3,-3,0 item_add 3,"12" : ' A LIRE =====: l'objet 3D n 12 dans le dlist 3 ne doit pas etre en collision avec le joueur. nombre_total_objet_collision=nombre_total_objet_collision+1 rem 3d_load_texture 12,"texture/bois2.jpg"
3d_box 11,5,5,1.5 3D_collision_as_cube 11 3d_y_rotate 11,-30 3d_x_rotate 11,70 rem 3d_position 11,4,-2,0 3d_y_position 11,-1 item_add 3,"11" : ' ici le 11 nombre_total_objet_collision=nombre_total_objet_collision+1
rem 3d_load_texture 11,"texture/tuile/TEXTUUR_P401_AMAR.jpg"
3d_cube 13,1 3D_collision_as_cube 13 3d_position 13,0,-0.5,1 item_add 3,"13" nombre_total_objet_collision=nombre_total_objet_collision+1
rem 3d_load_texture 13,"texture/5ymlyeif.jpg"
for i=number_3d_objects+1 to 20 3d_cube i,0.2 3D_collision_as_cube i 3d_position i,0,i/10,i/3 item_add 3,str$(i) nombre_total_objet_collision=nombre_total_objet_collision+1 next i
for i=1 to 9 3D_collision_as_cube i rem 3D_hide i next i
3D_hide 2 3D_hide 10 3d_color 2,255,255,0 3d_transparent 1,50
gosub actualiser_vue rem PROGRAMME PRINCIPALE#######################################################FIN timer 1 : timer_interval 1,1 : on_timer 1,programme on_key_down 0,touche_enfoncer on_key_up 0,touche_lacher end : rem LES SOUS PROGRAMMES##################################################### quitter: timer_off_all terminate return
touche_enfoncer: if key_down_code = 37 then touche_gauche=1 if key_down_code = 38 then touche_haut=1 if key_down_code = 39 then touche_droit=1 if key_down_code = 40 then touche_bas=1 if key_down_code = 32 then touche_espace=1 if key_down_code = 96 then touche_0_pn=1 if key_down_code = 107 then touche_plus_pn=1 if key_down_code = 109 then touche_moins_pn=1 return
touche_lacher: if key_up_code = 37 then touche_gauche=0 if key_up_code = 38 then touche_haut=0 if key_up_code = 39 then touche_droit=0 if key_up_code = 40 then touche_bas=0 if key_up_code = 32 then touche_espace=0 if key_up_code = 96 then touche_0_pn=0 if key_up_code = 107 then touche_plus_pn=0 if key_up_code = 109 then touche_moins_pn=0 return
actualiser_vue: ' A lire================================================================ ' ci dessous, on positionne les 6 cube autour du joueur 3d_position 3,o3d_x_position(1)+0.5,o3d_y_position(1),o3d_z_position(1) 3d_position 4,o3d_x_position(1)-0.5,o3d_y_position(1),o3d_z_position(1) 3d_position 5,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)+0.5 3d_position 6,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)-0.5 3d_position 7,o3d_x_position(1),o3d_y_position(1)+0.5,o3d_z_position(1) 3d_position 8,o3d_x_position(1),o3d_y_position(1)-0.6,o3d_z_position(1) ' jusque la============================================================
3d_position 9,o3d_x_position(1),o3d_y_position(1)-0.7,o3d_z_position(1)
3d_position 10,o3d_x_position(1),o3d_y_position(1)+0.5,o3d_z_position(1) 3d_rotate 10,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1) 3d_move 10,-1.5
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) 3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1) 3d_move 2,1.5 rem point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2) rem cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) point_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) rem cam_position o3d_x_position(10),o3d_y_position(10),o3d_z_position(10) return
programme: collision_camera=0 collision_camera_sol=0 ' A LIREaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ' ici anti collision jusau prochain commantaire ' il verifis chaque objet (la dlist 3 contient tout les NUMERO d'objet 3D a évité la collision) avec chacun des 6 cubes et deplace le joueur en consequence for i=1 to nombre_total_objet_collision
numero_objet_collision=val(item_read$(3,i))
if o3d_collision(3,numero_objet_collision)=1 3d_x_position 1,(o3d_x_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(4,numero_objet_collision)=1 3d_x_position 1,(o3d_x_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(5,numero_objet_collision)=1 3d_z_position 1,(o3d_z_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(6,numero_objet_collision)=1 3d_z_position 1,(o3d_z_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(7,numero_objet_collision)=1 3d_y_position 1,(o3d_y_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(8,numero_objet_collision)=1 3d_y_position 1,(o3d_y_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(9,numero_objet_collision)=1 : ' (cette ligne ne sert que pour sauté) collision_camera_sol=1 end_if next i ' jusque la!!!!!!!!!!! aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
if touche_0_pn = 1 if collision_camera_sol = 1 saut_en_cours=0 boucle_saut=0 saut_ok=1 hauteur_origine_camera=o3d_y_position(1) end_if end_if
if saut_ok=1 rem vitesse_deplacement=0.013 boucle_saut=boucle_saut+0.8 if boucle_saut>1 boucle_saut=0
saut_en_cours=saut_en_cours+1 3d_y_position 1,(((0-0.025*power(saut_en_cours,2)+1.25*saut_en_cours)/15)+hauteur_origine_camera) if collision_camera=1 then saut_ok=0 end_if else rem vitesse_deplacement=0.02 end_if
if saut_ok=0 if collision_camera_sol=0 if tombe_ok=0 saut_en_cours=25 boucle_saut=0 hauteur_origine_camera=o3d_y_position(1)-1.04166666666666 tombe_ok=1 end_if end_if end_if
if tombe_ok=1 boucle_saut=boucle_saut+0.8 if boucle_saut>1 boucle_saut=0 saut_en_cours=saut_en_cours+1 3d_y_position 1,(((0-0.025*power(saut_en_cours,2)+1.25*saut_en_cours)/15)+hauteur_origine_camera) if collision_camera_sol=1 then tombe_ok=0 end_if end_if
if collision_camera=1 3d_color 1,255,0,255 else if saut_ok=1 3d_color 1,255,0,0 else if tombe_ok=1 3d_color 1,0,255,0 else 3d_color 1,0,0,0 end_if end_if end_if
if key_down_code=27 : rem si on appui sur echap (quitter) gosub quitter end_if
if touche_haut=1 3d_move 1,vitesse_deplacement : rem On donne la vitesse_deplacement :) end_if if touche_bas=1 3d_move 1,0-vitesse_deplacement : rem 0-la vitesse_deplacement end_if if touche_gauche=1 3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation end_if if touche_droit=1 3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation end_if if touche_plus_pn=1 3d_y_position 1,o3d_y_position(1)+(vitesse_deplacement) tombe_ok=0 end_if if touche_moins_pn=1 3d_y_position 1,o3d_y_position(1)-(vitesse_deplacement) tombe_ok=0 end_if
gosub actualiser_vue return rem LES SOUS PROGRAMMES########################################################FIN Le second sert pour voir le résultat final: - Code:
-
error_french label programme , touche_enfoncer , touche_lacher , actualiser_vue , quitter dim touche_gauche , touche_haut , touche_droit , touche_bas , touche_espace , touche_0_pn , touche_plus_pn , touche_moins_pn dim vitesse_rotation , vitesse_deplacement , i dim numero_objet_collision , nombre_total_objet_collision dim saut_ok , collision_camera_sol , saut_en_cours , hauteur_origine_camera , collision_camera , boucle_saut , tombe_ok rem PROGRAMME PRINCIPALE########################################################## dlist 3 vitesse_rotation=2 vitesse_deplacement=0.02 Full_space 0 scene3D 2 : full_space 2 : color 2,0,0,255 3D_cube 1,1 : ' creation du cube pour la camera 3d_cube 2,1 : ' creation du cube pour le point de visee ' creation des 6 cubes autour du perso:aaaaaaaaaaaaaaaaaaaaaa 3D_cube 3,0.4 3D_cube 4,0.4 3D_cube 5,0.4 3D_cube 6,0.4 3D_cube 7,0.4 3D_cube 8,0.4 ' jusque la aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3D_cube 9,0.5 3D_cube 10,1
3d_position 1,1.2,2,0.3
3d_box 12,5,3.5,1.5 3D_collision_as_cube 12 3d_y_rotate 12,-30 3d_position 12,-3,-3,0 item_add 3,"12" : ' A LIRE =====: l'objet 3D n 12 dans le dlist 3 ne doit pas etre en collision avec le joueur. nombre_total_objet_collision=nombre_total_objet_collision+1 rem 3d_load_texture 12,"texture/bois2.jpg"
3d_box 11,5,5,1.5 3D_collision_as_cube 11 3d_y_rotate 11,-30 3d_x_rotate 11,70 rem 3d_position 11,4,-2,0 3d_y_position 11,-1 item_add 3,"11" : ' ici le 11 nombre_total_objet_collision=nombre_total_objet_collision+1
rem 3d_load_texture 11,"texture/tuile/TEXTUUR_P401_AMAR.jpg"
3d_cube 13,1 3D_collision_as_cube 13 3d_position 13,0,-0.5,1 item_add 3,"13" nombre_total_objet_collision=nombre_total_objet_collision+1
rem 3d_load_texture 13,"texture/5ymlyeif.jpg"
for i=number_3d_objects+1 to 20 3d_cube i,0.2 3D_collision_as_cube i 3d_position i,0,i/10,i/3 item_add 3,str$(i) nombre_total_objet_collision=nombre_total_objet_collision+1 next i
for i=1 to 9 3D_collision_as_cube i 3D_hide i next i
3D_hide 2 3D_hide 10 3d_color 2,255,255,0 3d_transparent 1,50
gosub actualiser_vue rem PROGRAMME PRINCIPALE#######################################################FIN timer 1 : timer_interval 1,1 : on_timer 1,programme on_key_down 0,touche_enfoncer on_key_up 0,touche_lacher end : rem LES SOUS PROGRAMMES##################################################### quitter: timer_off_all terminate return
touche_enfoncer: if key_down_code = 37 then touche_gauche=1 if key_down_code = 38 then touche_haut=1 if key_down_code = 39 then touche_droit=1 if key_down_code = 40 then touche_bas=1 if key_down_code = 32 then touche_espace=1 if key_down_code = 96 then touche_0_pn=1 if key_down_code = 107 then touche_plus_pn=1 if key_down_code = 109 then touche_moins_pn=1 return
touche_lacher: if key_up_code = 37 then touche_gauche=0 if key_up_code = 38 then touche_haut=0 if key_up_code = 39 then touche_droit=0 if key_up_code = 40 then touche_bas=0 if key_up_code = 32 then touche_espace=0 if key_up_code = 96 then touche_0_pn=0 if key_up_code = 107 then touche_plus_pn=0 if key_up_code = 109 then touche_moins_pn=0 return
actualiser_vue: ' A lire================================================================ ' ci dessous, on positionne les 6 cube autour du joueur 3d_position 3,o3d_x_position(1)+0.5,o3d_y_position(1),o3d_z_position(1) 3d_position 4,o3d_x_position(1)-0.5,o3d_y_position(1),o3d_z_position(1) 3d_position 5,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)+0.5 3d_position 6,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)-0.5 3d_position 7,o3d_x_position(1),o3d_y_position(1)+0.5,o3d_z_position(1) 3d_position 8,o3d_x_position(1),o3d_y_position(1)-0.6,o3d_z_position(1) ' jusque la============================================================
3d_position 9,o3d_x_position(1),o3d_y_position(1)-0.7,o3d_z_position(1)
3d_position 10,o3d_x_position(1),o3d_y_position(1)+0.5,o3d_z_position(1) 3d_rotate 10,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1) 3d_move 10,-1.5
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) 3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1) 3d_move 2,1.5 point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2) cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) rem point_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1) rem cam_position o3d_x_position(10),o3d_y_position(10),o3d_z_position(10) return
programme: collision_camera=0 collision_camera_sol=0 ' A LIREaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ' ici anti collision jusau prochain commantaire ' il verifis chaque objet (la dlist 3 contient tout les NUMERO d'objet 3D a évité la collision) avec chacun des 6 cubes et deplace le joueur en consequence for i=1 to nombre_total_objet_collision
numero_objet_collision=val(item_read$(3,i))
if o3d_collision(3,numero_objet_collision)=1 3d_x_position 1,(o3d_x_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(4,numero_objet_collision)=1 3d_x_position 1,(o3d_x_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(5,numero_objet_collision)=1 3d_z_position 1,(o3d_z_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(6,numero_objet_collision)=1 3d_z_position 1,(o3d_z_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(7,numero_objet_collision)=1 3d_y_position 1,(o3d_y_position(1)-vitesse_deplacement) collision_camera=1 end_if if o3d_collision(8,numero_objet_collision)=1 3d_y_position 1,(o3d_y_position(1)+vitesse_deplacement) collision_camera=1 end_if if o3d_collision(9,numero_objet_collision)=1 : ' (cette ligne ne sert que pour sauté) collision_camera_sol=1 end_if next i ' jusque la!!!!!!!!!!! aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
if touche_0_pn = 1 if collision_camera_sol = 1 saut_en_cours=0 boucle_saut=0 saut_ok=1 hauteur_origine_camera=o3d_y_position(1) end_if end_if
if saut_ok=1 rem vitesse_deplacement=0.013 boucle_saut=boucle_saut+0.8 if boucle_saut>1 boucle_saut=0
saut_en_cours=saut_en_cours+1 3d_y_position 1,(((0-0.025*power(saut_en_cours,2)+1.25*saut_en_cours)/15)+hauteur_origine_camera) if collision_camera=1 then saut_ok=0 end_if else rem vitesse_deplacement=0.02 end_if
if saut_ok=0 if collision_camera_sol=0 if tombe_ok=0 saut_en_cours=25 boucle_saut=0 hauteur_origine_camera=o3d_y_position(1)-1.04166666666666 tombe_ok=1 end_if end_if end_if
if tombe_ok=1 boucle_saut=boucle_saut+0.8 if boucle_saut>1 boucle_saut=0 saut_en_cours=saut_en_cours+1 3d_y_position 1,(((0-0.025*power(saut_en_cours,2)+1.25*saut_en_cours)/15)+hauteur_origine_camera) if collision_camera_sol=1 then tombe_ok=0 end_if end_if
if collision_camera=1 3d_color 1,255,0,255 else if saut_ok=1 3d_color 1,255,0,0 else if tombe_ok=1 3d_color 1,0,255,0 else 3d_color 1,0,0,0 end_if end_if end_if
if key_down_code=27 : rem si on appui sur echap (quitter) gosub quitter end_if
if touche_haut=1 3d_move 1,vitesse_deplacement : rem On donne la vitesse_deplacement :) end_if if touche_bas=1 3d_move 1,0-vitesse_deplacement : rem 0-la vitesse_deplacement end_if if touche_gauche=1 3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation end_if if touche_droit=1 3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation end_if if touche_plus_pn=1 3d_y_position 1,o3d_y_position(1)+(vitesse_deplacement) tombe_ok=0 end_if if touche_moins_pn=1 3d_y_position 1,o3d_y_position(1)-(vitesse_deplacement) tombe_ok=0 end_if
gosub actualiser_vue return rem LES SOUS PROGRAMMES########################################################FIN Si vous avez des questions je vous répondrai A bientôt | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: UN CHATEAU EN 3D Dim 11 Déc 2011 - 17:21 | |
| Le moteur 3D est sympa par contre j'ai un access violation quand je quitte Edit: j'ai retiré mon commentaire sur les textures car elles sont en commentaires et ne gène pas la démo. On peu utliser n'importe quelle texture à la place ^^ | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: UN CHATEAU EN 3D Lun 12 Déc 2011 - 10:44 | |
| Bonjour jimx78 Je viens de voir ton code sur les collisions. Je trouve toujours dur à comprendre, mais j'en saisis le principe. Bon, je vais peut-être dire une bêtise, mais je sais qu'il y a déjà l'instruction 3d_collision_as_cube, sphere, faces... etc et dans un programme, l'utilisation de cette instruction ne marche pas toujours. J'ai remarqué que cela était souvent du à la position sous laquelle a été enregistré le modèle 3d avec lequel on rentre en collision. L'instruction fonctionne correctement que si l'objet 3d a été enregistré à la position 0,0,0 et posé au sol dans le logiciel 3d. Autrement les résultats sont aléatoires avec cette instruction. Pour en revenir à ton programme,de gestion des collisions, as-tu essayé de mettre alors ton "cube personnage" à l'intérieur d'un autre cube un peu plus grand et invisible, au lieu d'utiliser 6 autres cubes devant,derrière, en haut, en bas, à droite et à gauche? Et en utilisant l'instruction 3d_collision_as_faces. Je me répète, mais je sens que je dis une bêtise. Il faudrait que je retrouve sur internet le site sur lequel j'étais allé il y a plusieurs mois, où on parlait des problèmes de collision dans un jeu, et comment aborder le problème dans différentes situation. Je crois qu'il parlait des 6 cubes, mais aussi du cube englobant et de sphère englobante. Ils détaillaient les inconvénients et les avantages de chaque solution et à quels types de jeu les appliquées. J'avais même parcouru des algorythmes de collision plus complexes sans rien y comprendre, mais dont les résultats étaient mieux! A bientôt, et merci encore pour tes programmes qui font avancer les choses. | |
| | | Contenu sponsorisé
| Sujet: Re: UN CHATEAU EN 3D | |
| |
| | | | UN CHATEAU EN 3D | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |