FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
UN CHATEAU EN 3D Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
UN CHATEAU EN 3D Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
UN CHATEAU EN 3D Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
UN CHATEAU EN 3D Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
UN CHATEAU EN 3D Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
UN CHATEAU EN 3D Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
UN CHATEAU EN 3D Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
UN CHATEAU EN 3D Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
UN CHATEAU EN 3D Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
UN CHATEAU EN 3D Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
UN CHATEAU EN 3D Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
UN CHATEAU EN 3D Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
UN CHATEAU EN 3D Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
UN CHATEAU EN 3D Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
UN CHATEAU EN 3D Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 UN CHATEAU EN 3D

Aller en bas 
+3
Jicehel
Nardo26
bignono
7 participants
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyJeu 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!!!!!!!! Wink
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyJeu 24 Nov 2011 - 23:27

Pour le téléchargement, c'est ok !
Sympa le chateau ! (manque un peu de mobilier quand même Very Happy )

Question : On peut pas passer la herse quand elle est levée ?
Revenir en haut Aller en bas
http://nardo26.lescigales.org
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyJeu 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.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyVen 25 Nov 2011 - 0:45

Je viens de tester ton programme. Le résultat est vraiment sympa Smile

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 Smile

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
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptySam 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 !
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyLun 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
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyLun 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!
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMar 29 Nov 2011 - 10:48

super, ça fait plaisir de voir de la 3D. Very Happy
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyVen 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
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptySam 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. Wink
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyLun 5 Déc 2011 - 19:17

Autant pour moi alors^^
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMar 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!! Smile
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 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
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 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.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 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. Smile

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

  • F1 pour la réactiver

  • 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 Razz )

  • 3 pour la vue a la 1er personne (par default)



Voir le Fichier : TEST_COLLISON_jimx8.zip

Je reviendrait mais pas ce soir

A bientôt Exclamation


Dernière édition par jimx78 le Mer 7 Déc 2011 - 22:29, édité 1 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 7 Déc 2011 - 22:15

Jack, n'oublies pas e demander 2 clones sur ta liste pour le Père Noël Smile
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 ^^)
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 7 Déc 2011 - 22:55

Wink 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! Very Happy
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 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

UN CHATEAU EN 3D Col10

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)
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 7 Déc 2011 - 23:19

Ok j'attendrai plus tard.
Fallait y penser aux 6 cubes sur chaque axe!
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 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! Sleep Sleep Sleep
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyMer 7 Déc 2011 - 23:51

Bonsoir a demain Sleep
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 33
Localisation : Yvelines
Date d'inscription : 24/05/2010

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyDim 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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyDim 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 ^^
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D EmptyLun 12 Déc 2011 - 10:44

Bonjour jimx78 Wink

Je viens de voir ton code sur les collisions. Je trouve toujours dur à comprendre, mais j'en saisis le principe. Exclamation
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. Question
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. drunken
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. Laughing
Revenir en haut Aller en bas
Contenu sponsorisé





UN CHATEAU EN 3D Empty
MessageSujet: Re: UN CHATEAU EN 3D   UN CHATEAU EN 3D Empty

Revenir en haut Aller en bas
 
UN CHATEAU EN 3D
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Le château enchanté d’un Panoramicien confiné

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: