Page 1 sur 1

CameraFollow (PB 5.20 Beta 6)

Publié : mar. 16/juil./2013 16:40
par falsam
Nouvelle fonction qui apparaît avec la vers 5.20 Beta 6

CameraFollow(#Camera, Angle, ObjectID, Height, Distance, RotationPercent, PositionPercent)

Camera : C'est la camera qui va suivre votre entité
Angle : L'angle où la caméra sera placée (Devant, derrière, à gauche ou à droite)
ObjectId : Par exemple l'entité à suivre
Height : A quel hauteur se trouve la camera
Distance : Et à quel distance en arrière

Je n'ai pas trouver les mots pour expliquer les deux paramètres qui suivent.
Je dirais que ça va permettre de paramétrer l'inertie de la caméra à se repositionner derrière l'entité
RotationPercent : Valeur décimale
PositionPercent : Valeur decimale

Exemple :

Code : Tout sélectionner

; Naissance d'un cube : Camera Follow

EnableExplicit

InitEngine3D()
InitKeyboard()
InitSprite()

Global Window, Event
Global Camera

Global Texture, Material 
Global Player_Mesh, Player, PlayerSpeed.f
Global Ground_Mesh, Ground

Window = OpenWindow(#PB_Any,0,0,1024,768,"Cube Follow")
OpenWindowedScreen(WindowID(window),0,0,1024,768)

;
; Activation Physics et Collisions (A mon avis ça ne sert à rien)
EnableWorldPhysics(#True) 
EnableWorldCollisions(#True)

;
; Ambience, Lumiére blanche et activation des ombres
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)
WorldShadows(#PB_Shadow_Additive)

;
; Camera 
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))

;
; Materiel (texture) qui servira pour le sol et le cube
Texture = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(Texture))
Box(0,0,256,256,RGB(0, 0, 0))
Box(1,1,252,252,RGB(255, 216, 0))
StopDrawing()
Material = CreateMaterial(#PB_Any, TextureID(Texture))

;
; Un cube qui servira pour le joueur et les obstacles
Player_Mesh = CreateCube (#PB_Any, 1)

;
; Creation du sol (Obstacle static)
Ground_Mesh = CreatePlane(#PB_Any, 50, 50, 1, 1, 6, 6)
Ground = CreateEntity(#PB_Any, MeshID(Ground_Mesh), MaterialID(Material))
EntityPhysicBody(Ground, #PB_Entity_StaticBody, 0,0,1)

;
; Le joueur
Player = CreateEntity(#PB_Any, MeshID(Player_Mesh), MaterialID(Material), 0, 0.5, 0)
EntityPhysicBody(Player, #PB_Entity_BoxBody, 1, 0.1, 0.2)



Repeat
  Event = WindowEvent()
  
  If ExamineKeyboard()
    
    ;Sortie du jeu
    If KeyboardPushed (#PB_Key_Escape)
     Break
    EndIf
       
    ;En avant ou en arriére
    If KeyboardPushed (#PB_Key_Up)
      PlayerSpeed = 2
    ElseIf KeyboardPushed (#PB_Key_Down)
      PlayerSpeed = - 2
    Else
      PlayerSpeed = 0
    EndIf
    
    ;A gauche ou à droite
    If KeyboardPushed (#PB_Key_Left)
      RotateEntity(Player, 0, 1.5, 0, #PB_Relative)
    ElseIf KeyboardPushed (#PB_Key_Right)
      RotateEntity(Player, 0, -1.5, 0, #PB_Relative)
    EndIf
    
    If PlayerSpeed <>0
      DisableEntityBody(Player, #False) ; Pour réveiller le player qui parfois reste bloquer
      MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
    EndIf 
    
    ;Nouvelle fonction qui apparait avec la vers 5.20 Beta 6 
    ;CameraFollow(#Camera, Angle, ObjectID, Height, Distance, RotationPercent, PositionPercent)
    
    ;Essayer les deux exemples qui suivent
    
    ;CameraFollow(Camera, EntityID(Player), -180, 3, 6, 1.00, 1.00)   
    CameraFollow(Camera, EntityID(Player), -180, 3, 6, 0.05, 0.05)   
    
  EndIf
  
  ; Affiche le rendu de la scène
  ClearScreen(RGB(0, 0, 0))
  RenderWorld(40)
  FlipBuffers()  
ForEver
Quand vous exécutez ce code et que vous attendez avec de faire avancer le cube, celui çi se bloque. Seul moyen de le réveiller c'est d'utiliser DisableEntityBody(Player, #False) juste avant le déplacement du cube MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)

Re: CameraFollow (PB 5.20 Beta 6)

Publié : mar. 16/juil./2013 20:42
par comtois
falsam a écrit :Je n'ai pas trouver les mots pour expliquer les deux paramètres qui suivent.
Je dirais que ça va permettre de paramétrer l'inertie de la caméra à se repositionner derrière l'entité
C'est une interpolation linéaire.

Re: CameraFollow (PB 5.20 Beta 6)

Publié : mar. 16/juil./2013 22:23
par SPH
Merci falsam pour tes tutos 3D. J'ai un peu laché la mais je vais m'y remettre. J'en etais au cube. :P

Re: CameraFollow (PB 5.20 Beta 6)

Publié : mer. 17/juil./2013 8:52
par Micoute
Bonjour falsam et je dis MERCI PROFESSEUR, c'est une joie d'apprendre avec toi !