(1) When an impulse is given too low for the ball (for example ApplyEntityImpulse(bola.i,0.1,0,0,0,0,0) ), then the collision physics behaviour seems not correct.
(2) When make a rotation for a mesh then the physic body created after the transformation (rotation) seems not to be correct working for collision. I think it should work, because CreateEntityBody() is called after the mesh transformation, so CreateEntityBody() should catch the shape as it is.
Code: Select all
ExamineDesktops()
bitplanes.a=DesktopDepth(0):RX.u=DesktopWidth(0):RY.u=DesktopHeight(0)
InitEngine3D()
InitSprite():InitKeyboard():InitMouse()
OpenWindow(0,0,0,RX,RY,"tip",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,RX,RY,0,0,0,#PB_Screen_WaitSynchronization)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
luz.i=CreateLight(#PB_Any,$EEEEEE,4,4,2,#PB_Light_Point):SetLightColor(luz.i,#PB_Light_DiffuseColor,$EEEEEE):MoveLight(luz,4,4,2,#PB_Absolute)
camara.i=CreateCamera(#PB_Any,0,0,100,100):MoveCamera(camara.i,0,0,3,#PB_Absolute)
cuerpotextura.i=LoadTexture(#PB_Any,"soil_wall.jpg")
cuerpomaterial.i=CreateMaterial(#PB_Any,TextureID(cuerpotextura.i))
cuerpomalla.i=CreateCylinder(#PB_Any,0.05,2,10,1,1)
cuerpo.i=CreateEntity(#PB_Any,MeshID(cuerpomalla.i),MaterialID(cuerpomaterial.i),0,0,0)
bolatextura.i=LoadTexture(#PB_Any,"snow_1024.jpg")
bolamaterial.i=CreateMaterial(#PB_Any,TextureID(bolatextura.i))
bolamalla.i=CreateSphere(#PB_Any,0.05,25,10)
bola.i=CreateEntity(#PB_Any,MeshID(bolamalla.i),MaterialID(bolamaterial.i),-0.3,0.8,0)
WorldGravity(0.0)
CreateEntityBody(cuerpo,#PB_Entity_CylinderBody,1.0,1.0,0.0):SetEntityAttribute(cuerpo,#PB_Entity_LinearSleeping,0.0):SetEntityAttribute(cuerpo,#PB_Entity_AngularSleeping,0.0)
CreateEntityBody(bola,#PB_Entity_SphereBody,1.0,1.0,0.0):SetEntityAttribute(bola,#PB_Entity_LinearSleeping,0.0):SetEntityAttribute(bola,#PB_Entity_AngularSleeping,0.0)
Repeat
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Space)
ApplyEntityImpulse(bola.i,0.3,0,0,0,0,0); <------------------ if the impulse is too low (for example ApplyEntityImpulse(bola.i,0.1,0,0,0,0,0) ), then the collision physics behaviour is not fine
ElseIf KeyboardReleased(#PB_Key_Return)
EntityVelocity(cuerpo,0,0,0)
MoveEntity(cuerpo,0.0,0.0,0.0,#PB_Absolute)
RotateEntity(cuerpo,0.0,0.0,0.0,#PB_Absolute)
EntityVelocity(bola,0,0,0)
MoveEntity(bola,-0.3,0.8,0,#PB_Absolute)
FreeEntityBody(cuerpo)
FreeEntity(cuerpo)
FreeMesh(cuerpomalla.i)
cuerpomalla.i=CreateCylinder(#PB_Any,1,0.1,80,1,1)
cuerpo.i=CreateEntity(#PB_Any,MeshID(cuerpomalla.i),MaterialID(cuerpomaterial.i),0,0,0)
TransformMesh(cuerpomalla.i,0,0,0,1,1,1,0,0,90,0); <---------------------- does not work when collision ?? (Must rotate the entity, whic suposes an inconvenient).
CreateEntityBody(cuerpo,#PB_Entity_CylinderBody,1.0,1.0,0.0):SetEntityAttribute(cuerpo,#PB_Entity_LinearSleeping,0.0):SetEntityAttribute(cuerpo,#PB_Entity_AngularSleeping,0.0)
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseWindow(0)

