Comment poser une pièce sur une autre ?
Publié : mar. 04/avr./2023 18:07
Salut,
pour un Tetris, la gravité n'est pas adaptée car elle accélère de plus en plus un objet.
Alors, j'ai fait un MoveEntity.
Mais comment le poser sur la premiere pièce qu'il rencontrera ?
Danke
pour un Tetris, la gravité n'est pas adaptée car elle accélère de plus en plus un objet.
Alors, j'ai fait un MoveEntity.
Mais comment le poser sur la premiere pièce qu'il rencontrera ?
Danke

Code : Tout sélectionner
EnableExplicit
Define Dim camera(1),Dim light(1),Dim mesh(2000),Dim material(1),Dim entity(2000)
; Define camera, light, mesh, material, entity
; Define camera2, light2, mesh2, material2, entity2
Define xx.f, yy.f, zz.f, xx2.f, yy2.f, zz2.f
; Define Dim create.l(100)
Define i.l,u.l,n.l,x.l,y.l,taille_x,taille_y,piece,piece_tetris
Define b.b
Define mesh, entity
ExamineDesktops()
InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard() : InitMouse()
OpenScreen(DesktopWidth(0), DesktopHeight(0), 32, "3D de base")
Add3DArchive(#PB_Compiler_Home + "examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
; Camera
camera(0) = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(camera(0), 0, 6, 40)
CameraLookAt(camera(0), 0, 0, 0)
RotateCamera(camera(0), 0 ,0 ,0)
; Si pas de ciel, couleur de fond
CameraBackColor(camera(0), RGB(184, 134, 11))
; Lumiere
light(0) = CreateLight(#PB_Any, RGB(255, 255, 255), -100, 100, 0)
; Création du premier cube
taille_x=8
taille_y=16
Dim tableau.b(taille_x,taille_y)
i=0
material(0) = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "caisse.png")))
For y=0 To taille_y
For x=0 To taille_x
If x=0 Or y=0 Or x=taille_x
tableau(x,y)=1
mesh(i) = CreateCube(#PB_Any, 1)
entity(i) = CreateEntity(#PB_Any, MeshID(mesh(i)), MaterialID(material(0)))
; On redimentionne le cube.
ScaleEntity(entity(i), 1, 1, 0.1)
MoveEntity(entity(i), x, y, 0)
i+1
EndIf
Next
Next
For u=1 To i-1
AttachEntityObject(entity(0), "", EntityID(entity(u)))
Next
piece_tetris=i
mesh(piece_tetris) = CreateCube(#PB_Any, 1)
entity(piece_tetris) = CreateEntity(#PB_Any, MeshID(mesh(piece_tetris)), MaterialID(material(0)))
; On redimentionne le cube.
ScaleEntity(entity(piece_tetris), 1, 1, 0.1)
MoveEntity(entity(piece_tetris), 5,12, 0)
; Boucle 3D
yy=-0.0625
Repeat
ExamineKeyboard()
ExamineMouse()
If KeyboardReleased(#PB_Key_G) And IsEntity(Entity(0))
CreateEntityBody(Entity(0), #PB_Entity_BoxBody, -0.25, 0, 0)
EndIf
If KeyboardReleased(#PB_Key_K) And IsEntity(Entity(0))
FreeEntity(Entity(0))
EndIf
MoveEntity(entity(piece_tetris), 0, yy, 0)
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(#PB_MouseButton_Middle)
End