Page 2 sur 2

Publié : mer. 10/août/2005 14:12
par scaraber
salut c encore moi
bon j'ai ameliorer mon code et maintanat il n'y a plus de prob de texture en faites dans ton code comtois tu a mis

Code : Tout sélectionner

CreateMaterial(1, LoadTexture(1, "r2skin.jpg")) 
avec un numero de texture dej autilise il sufisait de metre

Code : Tout sélectionner

CreateMaterial(1, LoadTexture(2, "r2skin.jpg")) 
sinon maintenat on peu faire tourner la camera autour du perso
en metant

Code : Tout sélectionner

 Angle = angleentity + MouseX 
a la place de + 180 je met + MouseX dans la boucle et

Code : Tout sélectionner

If ExamineMouse() 
                    If MouseButton(2) =1
                        MouseX = -(MouseDeltaX()/10)*#CameraSpeed*10 
                        MouseY = -(MouseDeltaY()/10)*#CameraSpeed*10 
                    EndIf  
                EndIf  
dans la boucle aussi pour que la cam ne tourne que avec le clique droit

jai aussi redimensioner le robot a 0.05 et la vitesse (#CameraSpeed = 0.2) a 0.2

mais ej n'est aps trouver coment utiliser le molete pour changer la distance hauteur , coment changer langle haut -bas et pour que lme perso marche que quand on veut et ap^s tout le temsp (animation) voial si quelqun s'avait faire sa m'aiderai
a++

Publié : mer. 10/août/2005 16:32
par comtois
tu as juste à faire ça dans le code que je t'ai montré

Code : Tout sélectionner

 
If ExamineMouse()
   MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
   MouseY = MouseWheel()*#CameraSpeed
EndIf 

Publié : mer. 10/août/2005 16:41
par scaraber
de quoi veut tu parler

Publié : mer. 10/août/2005 17:25
par scaraber
bon voici mon code je vais metre des indic dessus

Code : Tout sélectionner


#RobotMesh    = 0 
#RobotTexture = 0 
#Robot        = 0 
#CameraSpeed  = 0.2

IncludeFile "Screen3DRequester.pb" 

DefType.f KeyX, KeyY, MouseX, MouseY 


If InitEngine3D() 
    ;lieu ou sont les media
    Add3DArchive("data/"          , #PB_3DArchive_FileSystem) 
    Add3DArchive("data/Skybox.zip", #PB_3DArchive_Zip) 
    
    InitSprite() 
    InitKeyboard() 
    InitMouse() 
    
    If Screen3DRequester() 
        Angle = angleentity + 180 
        AmbientColor(RGB(255,255,255)) 
        
        CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg")) 
        AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1) 
        ;on crée le terain a partir du fichier terrain.Png
        CreateTerrain("Terrain.png", MaterialID(0), 10, 0.6, 10, 10)  
        ;on crée la camera
        CreateCamera(0, 0, 0, 100, 100) 
        CameraLocate(0, 128, 25, 128) 
        ;on charge le robotet on le texture
        LoadMesh (#RobotMesh ,"Robot.mesh") 
        CreateMaterial(1, LoadTexture(2,"r2skin.jpg")) 
        ;on créé l'entiter perso
        CreateEntity(#Robot, MeshID(#RobotMesh), MaterialID(1)) 
;on annime l'entiter mais j'aimerai quelle soit animer seulement quadn on apui sur un touche
;(1ere probleme)  
        AnimateEntity(#Robot, "Walk") 
        
        DisableMaterialLighting(0, 1) 
        
        MaterialAmbientColor(0, RGB(100, 100, 100)) 
        MaterialSpecularColor(0, RGB(255, 255, 255)) 
        
        CreateLight(0, RGB(0,0,255), 100.0, 0, 0) 
        LightSpecularColor(0, RGB(255, 0, 0)) 
        ;on fait le ciel
        SkyDome("Clouds.jpg",10) 
        ;on redimensione lentitée
        ScaleEntity(#Robot,0.05,0.05,0.05) 
        ;on defini quelque variable hat est la hauteur de la camera et 
        ;dst sa distance par raport a l'objet
        DEcaleCam = 180 
        hat=5
        dst = 13        
;  __________________________________        
; |                                                           |
; |  boucle principale du programme           |       
; |__________________________________|      
     
        Repeat 
            
            Screen3DEvents() 
            ;pour tourner la camera autour du perso avec la souris
            Angle = angleentity + MouseX
            
 ;si on apui sur une des touche suisvante on bouge la camera masi j'aimerai 
 ;que ce soit fait avec la souris (2eme probleme)

            If ExamineKeyboard() 
                If KeyboardPushed (#PB_Key_Add) 
                dst=dst+1
                EndIf 
                If KeyboardPushed (#PB_Key_Subtract) 
                dst=dst-1
                EndIf   
                If KeyboardPushed (#PB_Key_PageUp) 
                hat=hat+1
                EndIf 
                If KeyboardPushed (#PB_Key_PageDown) 
                hat=hat-1
                EndIf      

                ;gestion clavier bouton fleche de gauche et fleche de droite                
                If KeyboardPushed(#PB_Key_Left) 
                    KeyX = 3 
                    Angle2= Angle2+3 
                ElseIf KeyboardPushed(#PB_Key_Right) 
                    KeyX = -3 
                    Angle2= Angle2-3        
                Else 
                    KeyX = 0 
                EndIf 
                
                ;gestion clavier bouton fleche du haut et fleche du bas
                If KeyboardPushed(#PB_Key_Up) 
                    KeyY = #CameraSpeed 
                ElseIf KeyboardPushed(#PB_Key_Down) 
                    KeyY = -#CameraSpeed 
                Else 
                    KeyY = 0 
                EndIf 
                
                ;gestion de la souris
                If ExamineMouse() 
                          
                    If MouseButton(2) =1
                        MouseX = -(MouseDeltaX()/10)*#CameraSpeed*10 
                        MouseY = -(MouseDeltaY()/10)*#CameraSpeed*10 
                           
                    EndIf  
                EndIf  
           
                ;Tourne le robot 
                RotateEntity(0,KeyX,0,0) 
                ;Déplace le robot 
                MoveEntity (0, Cos( Angle2 * 0.0174533 ) * KeyY, 0,- Sin( Angle2 * 0.0174533 ) * KeyY) 
                ;Hauteur du robot sur le terrain 
                Height.f = TerrainHeight (EntityX(0), EntityZ(0)) +0.2
                ;Replace le Robot à la bonne hauteur sur le terrain 
                EntityLocate(#Robot,EntityX(#Robot),Height,EntityZ(#Robot)) 
                
                ;Gestion de la caméra après le déplacement du robot 
                ;Angle de la caméra > On place la caméra derrière le robot 
                DEcaleCam - MouseX 
                Angle = Angle2 + DEcaleCam 
                PosXCamera.f = EntityX(0) + Cos( Angle * 0.0174533 ) * dst
                PosZCamera.f = EntityZ(0) - Sin( Angle * 0.0174533 ) * dst
                PosYCamera.f = EntityY(0) + hat               
                ;Contrôle la hauteur de la caméra ,pour qu'elle survole le terrain en suivant le robot 
                HauteurCamera.f = TerrainHeight (PosXCamera, PosZCamera) 
                If HauteurCamera + hat > PosYCamera 
                    PosYCamera = HauteurCamera + hat 
                EndIf    
                CameraLocate(0, PosXCamera , PosYCamera , PosZCamera) 
                
                DecaleLookY + MouseY 
                CameraLookAt(0, EntityX(0), EntityY(0) , EntityZ(0)) 
;j'aimerai ici que apres un double clique droit la camera reviene a sa vue de depart  
;3eme probleme              
               If Event = WindowEvent() 
            
                ElseIf Event = #WM_RBUTTONDOWN 
            
                ElseIf Event = #WM_RBUTTONUP 
 
                ElseIf Event = #WM_RBUTTONDBLCLK 
                Angle = angleentity + 180
                hat=5
                dst=13
               EndIf 

                
                
            EndIf 
            
            RenderWorld() 
            Screen3DStats() 
            FlipBuffers() 
            
        Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1 
        
    EndIf 
    
Else 
    MessageRequester("Error", "The 3D Engine can't be initialized",0) 
EndIf 
  
End
voila les petit porbleme sont expliquer dessus dans cette version les touche page haut-bas et + - sont utiliser