Page 1 sur 1

Un petit coup de pouce (Je sais encore un ..)

Publié : dim. 29/févr./2004 12:05
par CORBASE
Pour faire un circuit à la pureRacer, sa tourne comment ?

On fait pas de terrain la ?

Enfin, le truc c'est que j'essaye de bien comprendre la 3D :p

Publié : dim. 29/févr./2004 12:15
par T€r$@k€n
Je crois que PureRacer est en 2d et joue sur la profondeur de sprites.

Publié : dim. 29/févr./2004 12:17
par CORBASE
Ok merci

Sinon pour faire un circuit en 3D, juste le cricuit, on peux le faire avec un CreateTerrain() ?

Publié : dim. 29/févr./2004 12:49
par comtois
pureracer est fait avec des sprites 3D , je crois que le source était dispo sur le site de l'auteur ? ou je confonds avec un autre code ?

Et je crois qu'il va faire une version en 3D .

Pour ton circuit, tu peux essayer de le faire avec un terrain,Pourquoi pas.
mais l'intérêt d'un terrain c'est de créer un volume , si tu fais un circuit plat ,ce n'est peut-être pas utile ?

Remarque si , tu peux gérer les collisions en jouant sur la hauteur du terrain , en relevant les bords du circuit , et en testant la position en hauteur sur le terrain , ça peut te faire une gestion de collision simple .

J'avais commencé avec un éditeur de map de mon cru , à la façon des maps 2D qui assemblent des tiles , pour créer un circuit en 3D , le moteur affiche des crénelures entre les pièces ,ou alors il y a des jours , je n'aime pas trop l'aspect , bon je n'ai pas trop cherché non plus pour améliorer le truc , c'était un bout d'essai, mais ça rendait quand même déjà mieux que mon autre essai avec seulement une texture en guise de circuit !

Bon je ne suis pas bien placé pour donner des conseils , je n'ai aucune idée de la façon la mieux adaptée pour créer un jeu de course :)

J'ai fait une petite tentative très rapide , pour me faire une petite idée des possibilités 3D de PB . ça n'a rien à voir avec un jeu de course ,il y a tout à reprendre .

Et ensuite , le plus dur , ça reste la gestion de la voiture :)

Publié : dim. 29/févr./2004 13:44
par CORBASE
Ok merci Comtois.

Par contre, ya pas moyen d'essayer ton editeur de Map :P

Bah pour la gestion de la voiture, au départ je vais essayer de faire simple, un mesh avec un MoveEntity.

On se moque pas, j'apprend :P

En tout cas merci pour votre aide

Publié : dim. 29/févr./2004 16:45
par comtois
CORBASE a écrit :Par contre, ya pas moyen d'essayer ton editeur de Map :P
Ben , y'a vraiment que moi qui peut l'utiliser , il est pas fini , je dirais même qu'il est entièrement à reprendre , je dois bricoler un peu le code pour l'adapter selon ce que je fais , pas terrible pour le distribuer hein ? :)

mais tu peux faire ça très simplement avec des datas ou sur le site de polux , il a mis un petit éditeur très simple , que tu peux adapter pour créer ton circuit .

le principe avec des datas

Data.w 1,1,1,2,3,1,1
Data.w 1,1,2,3,4,1,1
etc

tu décris ton circuit dans les datas , avec
1 = texture herbe
2 = texture virage à droite
3 = texture virage à gauche
4 = texture ligne droite verticale
5 = texture ligne droite horizontale

c'est un exemple

ensuite pour construire ton circuit , tu appliques tes textures à un mesh de type plain , il ne contient que deux polygones , et tu places tes meshs comme pour une map 2D

voila les datas pour faire un plain

Code : Tout sélectionner

;-Mesh
CreateMesh(#MeshPlain) ;Plain 
SetMeshData(#MeshPlain, 0, ?PlainPoints      , 4)
SetMeshData(#MeshPlain, 1, ?PlainTriangles   , 4)
SetMeshData(#MeshPlain, 2, ?PlainTextures    , 4)

datasection

PlainPoints:
Data.f -0.5, 0, -0.5 
Data.f 0.5 , 0, -0.5 
Data.f 0.5 , 0, 0.5 
Data.f -0.5, 0, 0.5 

PlainTriangles:
Data.w 0, 1, 2 
Data.w 0, 2, 3 
Data.w 2, 1, 0 
Data.w 3, 2, 0

PlainTextures:
Data.f 0, 0 
Data.f 1, 0 
Data.f 1, 1   
Data.f 0, 1

enddatasection
et ensuite ,tu pourras créer des entitys avec tes textures

Code : Tout sélectionner

CreateEntity(NoEntity , MeshID(NoMesh) , MaterialID(Type))
ScaleEntity(NoEntity , #TailleEntity , #TailleEntity , #TailleEntity) 
EntityLocate(NoEntity , x * #TailleEntity , EntityH , z * #TailleEntity)

Publié : dim. 29/févr./2004 18:26
par CORBASE
Merci pour le code c'est cool, j'essayerais plus tard, car la j'essaye de comprendre comment mettre un mesh sur un terrain, voici mon code, je n'est que le terrain, et je ne voit pas mon mesh :

Code : Tout sélectionner

;- Robot   
    LoadMesh   (#RobotMesh   , "Robot.mesh")
    LoadTexture(#RobotTexture, "r2skin.jpg")
    
    CreateMaterial(0, TextureID(#RobotTexture))
    
    CreateEntity(#Robot, MeshID(#RobotMesh), MaterialID(0))
    EntityMaterial(#Robot, MaterialID(0))
    
    AnimateEntity(#Robot, "Walk")
    
    DisableMaterialLighting(0, 1)
    
    MaterialAmbientColor(0, RGB(100, 100, 100))
    MaterialSpecularColor(0, RGB(255, 255, 255))
    ScrollMaterial(0, 0.15, 0, 1)
        
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0)
    LightSpecularColor(0, RGB(255, 0, 0))

;- Terrain
      If LoadTexture(1, "terrain_tex3.png")=0  
       MessageRequester("","Error LoadTexture",0):End:EndIf 
      CreateMaterial(1,TextureID(1)) 

      If CreateTerrain("terrain.png", MaterialID(1), 0.5, 0.6, 0.5, 0.5) = 0 
      MessageRequester("","Error CreateTerrain",0):End:EndIf 
          
    SkyBox("Stevecube.jpg")
   
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 128, 25, 128)
Si quelqu'unpourra m'aider sur ce coup la, ça serait vraiment cool :p

Et encore merci Comtois pour ton aide INESTIMABLE !

Publié : dim. 29/févr./2004 20:00
par comtois
j'ai mis un source 3D ici , ça peut déjà te donner quelques idées
regarde la gestion de la camera dans la procedure gestioncamera()
il y a des trucs que tu peux supprimer pour faire simple au début

http://purebasic.hmt-forum.com/viewtopic.php?t=91

le principe , c'est que les touches agissent sur le personnage , donc ici ton robot ,et tu règles la camera pour qu'elle suive le robot .

pour cela , tu places la camera derrière le robot
tu peux récupérer les fonctions newXvalue() et NewZvalue()

un exemple d'utilisation

Code : Tout sélectionner

PosXCamera.f =  NewXValue(EntityX(0) , Robot\AngleX + 180 , Camera\Distance) 
PosYCamera.f =  EntityY(0) + 30 
PosZCamera.f =  NewZValue(EntityZ(0) , Robot\AngleX + 180 , Camera\Distance) 
;positionne la camera derrière ,et légèrement au dessus du robot
CameraLocate(0 , PosXCamera , PosYCamera , PosZCamera)
;et on oriente la camera en direction du robot
CameraLookAt(0 , EntityX(0) , EntityY(0) , EntityZ(0))

Publié : dim. 29/févr./2004 21:34
par CORBASE
Merci c'est cool comtois !

Enfin, j'ai reussi à faire marcher le robot de base sur un terrain de ma création, mais il me fallait une bonne source comme tu ma filer
Thxxxxx

:p