Node et gestion des collisions.

Généralités sur la programmation 3D
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Node et gestion des collisions.

Message par comtois »

graph100 a écrit :ben, j'ai bien essayé, mais comme toujours depuis que je suis passé sur win8, tout les code 3D plantent sur le renderworld(), et je ne sais pas pourquoi.
Au vu du nombre de jeu installé sur mon pc j'ai approximativement toutes les version de directX9, 10, et 11, donc je vois pas !!
Y'a quoi dans ton log ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Node et gestion des collisions.

Message par comtois »

falsam a écrit :Sinon ..... Quelqu'un a testé le code ? :mrgreen:
Ben oui !
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

graph100 a écrit :ben, j'ai bien essayé, mais comme toujours depuis que je suis passé sur win8, tout les code 3D plantent sur le renderworld(), et je ne sais pas pourquoi.
Meme souci sous Windows 8 effectivement. Compile avec l'option Bibliothéque Sous-System : OpenGL et ça fonctionnera
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Node et gestion des collisions.

Message par graph100 »

Ah oui ! je me souviens que G-Rom m'avait donné le même conseil ! autant pour moi :oops:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

comtois a écrit :Ben oui !
ça je sais ..... comment j'aurais pu obtenir le La Rache iso-1664 Certified :mrgreen: MouahHHHHHHHhhhh suis trop fier :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Node et gestion des collisions.

Message par graph100 »

Bon, 1er commentaire à l'arrache :
- on peut pas sauter en marchant
- le perso tourne en permanence à droite (c'est agaçant :x )
- quand on saute plein de fois, on se met à voler, ce qui est cool, mais quand on marche en l'air, le perso tombe bcp plus lentement que lorsqu'il le marche pas.
- on tourne beaucoup trop lentement !
- fixe moi cette caméra sur la souris :twisted:
- fait marcher le perso avec la souris :twisted: :twisted:

sinon : BRAVO, je suis incapable d'arriver à ce résultat !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Node et gestion des collisions.

Message par djes »

Plante pour moi, y compris en opengl :(
Voici le ogre.log directx
08:37:14: Creating resource group General
08:37:14: Creating resource group Internal
08:37:14: Creating resource group Autodetect
08:37:14: SceneManagerFactory for type 'DefaultSceneManager' registered.
08:37:14: Registering ResourceManager for type Material
08:37:14: Registering ResourceManager for type Mesh
08:37:14: Registering ResourceManager for type Skeleton
08:37:14: MovableObjectFactory for type 'ParticleSystem' registered.
08:37:14: OverlayElementFactory for type Panel registered.
08:37:14: OverlayElementFactory for type BorderPanel registered.
08:37:14: OverlayElementFactory for type TextArea registered.
08:37:14: Registering ResourceManager for type Font
08:37:14: ArchiveFactory for archive type FileSystem registered.
08:37:14: ArchiveFactory for archive type Zip registered.
08:37:14: ArchiveFactory for archive type EmbeddedZip registered.
08:37:14: DDS codec registering
08:37:14: FreeImage version: 3.10.0
08:37:14: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
08:37:14: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,koa,iff,lbm,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,dds,gif,g3,sgi,j2k,j2c,jp2
08:37:14: PVRTC codec registering
08:37:14: Registering ResourceManager for type HighLevelGpuProgram
08:37:14: Registering ResourceManager for type Compositor
08:37:14: MovableObjectFactory for type 'Entity' registered.
08:37:14: MovableObjectFactory for type 'Light' registered.
08:37:14: MovableObjectFactory for type 'BillboardSet' registered.
08:37:14: MovableObjectFactory for type 'ManualObject' registered.
08:37:14: MovableObjectFactory for type 'BillboardChain' registered.
08:37:14: MovableObjectFactory for type 'RibbonTrail' registered.
08:37:14: *-*-* OGRE Initialising
08:37:14: *-*-* Version 1.8.2 (Byatis)
08:37:14: D3D9 : Direct3D9 Rendering Subsystem created.
08:37:14: D3D9: Driver Detection Starts
08:37:14: D3D9: Driver Detection Ends
08:37:15: Particle Emitter Type 'Point' registered
08:37:15: Particle Emitter Type 'Box' registered
08:37:15: Particle Emitter Type 'Ellipsoid' registered
08:37:15: Particle Emitter Type 'Cylinder' registered
08:37:15: Particle Emitter Type 'Ring' registered
08:37:15: Particle Emitter Type 'HollowEllipsoid' registered
08:37:15: Particle Affector Type 'LinearForce' registered
08:37:15: Particle Affector Type 'ColourFader' registered
08:37:15: Particle Affector Type 'ColourFader2' registered
08:37:15: Particle Affector Type 'ColourImage' registered
08:37:15: Particle Affector Type 'ColourInterpolator' registered
08:37:15: Particle Affector Type 'Scaler' registered
08:37:15: Particle Affector Type 'Rotator' registered
08:37:15: Particle Affector Type 'DirectionRandomiser' registered
08:37:15: Particle Affector Type 'DeflectorPlane' registered
08:37:15: PCZone Factory Type 'ZoneType_Default' registered
08:37:15: CPU Identifier & Features
08:37:15: -------------------------
08:37:15: * CPU ID: GenuineIntel: Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz
08:37:15: * SSE: yes
08:37:15: * SSE2: yes
08:37:15: * SSE3: yes
08:37:15: * MMX: yes
08:37:15: * MMXEXT: yes
08:37:15: * 3DNOW: no
08:37:15: * 3DNOWEXT: no
08:37:15: * CMOV: yes
08:37:15: * TSC: yes
08:37:15: * FPU: yes
08:37:15: * PRO: yes
08:37:15: * HT: no
08:37:15: -------------------------
08:37:15: D3D9 : Subsystem Initialising
08:37:15: Registering ResourceManager for type Texture
08:37:15: Registering ResourceManager for type GpuProgram
08:37:15: ***************************************
08:37:15: *** D3D9 : Subsystem Initialised OK ***
08:37:15: ***************************************
08:37:15: SceneManagerFactory for type 'OctreeSceneManager' registered.
08:37:15: SceneManagerFactory for type 'BspSceneManager' registered.
08:37:15: Registering ResourceManager for type BspLevel
08:37:17: Added resource location 'C:\Users\-\AppData\Local\Temp\' of type 'FileSystem' to resource group 'General'
08:37:17: D3D9RenderSystem::_createRenderWindow "PureBasic Ogre", 1280x1002 windowed miscParams: FSAA=0 displayFrequency=0 externalWindowHandle=525196 vsync=true
08:37:17: D3D9 : Created D3D9 Rendering Window 'PureBasic Ogre' : 1280x1002, 32bpp
08:37:17: D3D9: Vertex texture format supported - PF_L8
08:37:17: D3D9: Vertex texture format supported - PF_L16
08:37:17: D3D9: Vertex texture format supported - PF_A8
08:37:17: D3D9: Vertex texture format supported - PF_A4L4
08:37:17: D3D9: Vertex texture format supported - PF_BYTE_LA
08:37:17: D3D9: Vertex texture format supported - PF_R5G6B5
08:37:17: D3D9: Vertex texture format supported - PF_B5G6R5
08:37:17: D3D9: Vertex texture format supported - PF_A4R4G4B4
08:37:17: D3D9: Vertex texture format supported - PF_A1R5G5B5
08:37:17: D3D9: Vertex texture format supported - PF_A8R8G8B8
08:37:17: D3D9: Vertex texture format supported - PF_B8G8R8A8
08:37:17: D3D9: Vertex texture format supported - PF_A2R10G10B10
08:37:17: D3D9: Vertex texture format supported - PF_A2B10G10R10
08:37:17: D3D9: Vertex texture format supported - PF_DXT1
08:37:17: D3D9: Vertex texture format supported - PF_DXT2
08:37:17: D3D9: Vertex texture format supported - PF_DXT3
08:37:17: D3D9: Vertex texture format supported - PF_DXT4
08:37:17: D3D9: Vertex texture format supported - PF_DXT5
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT16_RGB
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT16_RGBA
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT32_RGB
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT32_RGBA
08:37:17: D3D9: Vertex texture format supported - PF_X8R8G8B8
08:37:17: D3D9: Vertex texture format supported - PF_X8B8G8R8
08:37:17: D3D9: Vertex texture format supported - PF_R8G8B8A8
08:37:17: D3D9: Vertex texture format supported - PF_DEPTH
08:37:17: D3D9: Vertex texture format supported - PF_SHORT_RGBA
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT16_R
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT32_R
08:37:17: D3D9: Vertex texture format supported - PF_SHORT_GR
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT16_GR
08:37:17: D3D9: Vertex texture format supported - PF_FLOAT32_GR
08:37:17: D3D9: Vertex texture format supported - PF_SHORT_RGB
08:37:17: D3D9: Vertex texture format supported - PF_PVRTC_RGB2
08:37:17: D3D9: Vertex texture format supported - PF_PVRTC_RGBA2
08:37:17: D3D9: Vertex texture format supported - PF_PVRTC_RGB4
08:37:17: D3D9: Vertex texture format supported - PF_PVRTC_RGBA4
08:37:17: D3D9: Vertex texture format supported - PF_R8
08:37:17: D3D9: Vertex texture format supported - PF_RG8
08:37:17: RenderSystem capabilities
08:37:17: -------------------------
08:37:17: RenderSystem Name: Direct3D9 Rendering Subsystem
08:37:17: GPU Vendor: ati
08:37:17: Device Name: Monitor-1-ASUS EAH6570 Series
08:37:17: Driver Version: 8.17.10.1083
08:37:17: * Fixed function pipeline: yes
08:37:17: * Hardware generation of mipmaps: yes
08:37:17: * Texture blending: yes
08:37:17: * Anisotropic texture filtering: yes
08:37:17: * Dot product texture operation: yes
08:37:17: * Cube mapping: yes
08:37:17: * Hardware stencil buffer: yes
08:37:17: - Stencil depth: 8
08:37:17: - Two sided stencil support: yes
08:37:17: - Wrap stencil values: yes
08:37:17: * Hardware vertex / index buffers: yes
08:37:17: * Vertex programs: yes
08:37:17: * Number of floating-point constants for vertex programs: 256
08:37:17: * Number of integer constants for vertex programs: 16
08:37:17: * Number of boolean constants for vertex programs: 16
08:37:17: * Fragment programs: yes
08:37:17: * Number of floating-point constants for fragment programs: 224
08:37:17: * Number of integer constants for fragment programs: 16
08:37:17: * Number of boolean constants for fragment programs: 16
08:37:17: * Geometry programs: no
08:37:17: * Number of floating-point constants for geometry programs: 0
08:37:17: * Number of integer constants for geometry programs: 15
08:37:17: * Number of boolean constants for geometry programs: 0
08:37:17: * Supported Shader Profiles: hlsl ps_1_1 ps_1_2 ps_1_3 ps_1_4 ps_2_0 ps_2_a ps_2_b ps_2_x ps_3_0 vs_1_1 vs_2_0 vs_2_a vs_2_x vs_3_0
08:37:17: * Texture Compression: yes
08:37:17: - DXT: yes
08:37:17: - VTC: no
08:37:17: - PVRTC: no
08:37:17: * Scissor Rectangle: yes
08:37:17: * Hardware Occlusion Query: yes
08:37:17: * User clip planes: yes
08:37:17: * VET_UBYTE4 vertex element type: yes
08:37:17: * Infinite far plane projection: yes
08:37:17: * Hardware render-to-texture: yes
08:37:17: * Floating point textures: yes
08:37:17: * Non-power-of-two textures: yes
08:37:17: * Volume textures: yes
08:37:17: * Multiple Render Targets: 4
08:37:17: - With different bit depths: yes
08:37:17: * Point Sprites: yes
08:37:17: * Extended point parameters: yes
08:37:17: * Max Point Size: 256
08:37:17: * Vertex texture fetch: yes
08:37:17: * Number of world matrices: 0
08:37:17: * Number of texture units: 8
08:37:17: * Stencil buffer depth: 8
08:37:17: * Number of vertex blend matrices: 0
08:37:17: - Max vertex textures: 4
08:37:17: - Vertex textures shared: no
08:37:17: * Render to Vertex Buffer : no
08:37:17: * DirectX per stage constants: yes
08:37:17: DefaultWorkQueue('Root') initialising on thread main.
08:37:17: Particle Renderer Type 'billboard' registered
08:37:17: Texture: floor1.jpg: Loading 1 faces(PF_R8G8B8,700x700x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,700x700x1.
08:37:17: Texture: building1.jpg: Loading 1 faces(PF_R8G8B8,592x1024x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,592x1024x1.
08:37:18: Mesh: Loading body2.mesh.
08:37:18: Can't assign material workfile_obj#0 to SubEntity of E31097504 because this Material does not exist. Have you forgotten to define it in a .material script?
08:37:18: Mesh: Loading body2.mesh.
08:37:18: Can't assign material workfile_obj#0 to SubEntity of E31098512 because this Material does not exist. Have you forgotten to define it in a .material script?
08:37:18: Mesh: Loading body2.mesh.
08:37:18: Can't assign material workfile_obj#0 to SubEntity of E31099520 because this Material does not exist. Have you forgotten to define it in a .material script?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

@djes: Ma première pensée était que tu n'avais pas chargé les textures et le mesh qui sert à faire une entité invisible (body2.mesh) mais apparemment ce n'est pas le cas. Le log montre bien que les textures et le mesh est bien chargé :
08:37:17: Texture: floor1.jpg: Loading 1 faces(PF_R8G8B8,700x700x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,700x700x1.
08:37:17: Texture: building1.jpg: Loading 1 faces(PF_R8G8B8,592x1024x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,592x1024x1.
08:37:18: Mesh: Loading body2.mesh.
Par contre il y a un souci pour assigné le material mais je ne sais pas sur quelle entité. Ce qui est certain c'est que ce n'est pas sur les "avatars" car il n'y a pas de texture de prévu.
08:37:18: Can't assign material workfile_obj#0 to SubEntity of E31097504 because this Material does not exist.
J'avoue que n'étant pas confronté à cette erreur sous windows7 et 8 je ne peux pas te donner une réponse.

@graph100:Merci pour ce retour d'expérience (Feedback)
graph100 a écrit :on peut pas sauter en marchant
Je l'indique dans mon message de présentation du code. Mais je vais arranger ça.
graph100 a écrit :le perso tourne en permanence à droite (c'est agaçant :x )
C'est clair que c'est agaçant. ça te fait ça à chaque éxécution du code ?
graph100 a écrit : quand on saute plein de fois, on se met à voler, ce qui est cool, mais quand on marche en l'air, le perso tombe bcp plus lentement que lorsqu'il le marche pas.
Normal la gestion des collision n'est pas encore en place. je ne teste pas si l'avatar est en contact avec une entité ou pas. Là aussi je vais arranger ça.
graph100 a écrit :on tourne beaucoup trop lentement !
je suis d'accord :)
graph100 a écrit :- fixe moi cette caméra sur la souris :twisted:
- fait marcher le perso avec la souris :twisted: :twisted:
Le code étant libre je te laisse faire.

:!: J'ai installé Pure Basic sur un Ordinateur ayant une config sous windoxs 8 largement plus puissante que mon pc (Voir signature) et la marche de l'avatar est nettement plus lente que sous Windows7. je trouve aussi dommage d'activer OpenGl pour que les codes 3D fonctionnent. Quelques soit le code 3D le RenderWorld() plante sans cette option.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Node et gestion des collisions.

Message par djes »

C'est la fonction WorldShadows(), comme d'habitude, qui fait planter le programme. De toutes façons, je n'ai eu qu'une machine sur laquelle cette fonction fonctionne, je l'ai déjà dit à plusieurs reprises, il y a un souci là ! (de mémoire, j'ai testé sur 6 types de machines différentes...)

Alors, pour le programme, j'ai rapidement eu envie de mettre une tarte à l'olibrius qui m'a foncé dessus, j'ai pas bien deviné ses intentions, mais j'avais pas envie de me faire rouler une pelle par une tête carrée. Et là, pas moyen : pas de FAMAS, pas d'uzi, pas de coup de boule, rien ! Au s'cours !

Bon, sinon c'est sympa, tu veux faire quoi au juste, t'amuser avec les nodes ? C'a été dur ? Ca m'a l'air compliqué quand même, non ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

djes a écrit :C'est la fonction WorldShadows(), comme d'habitude, qui fait planter le programme. De toutes façons, je n'ai eu qu'une machine sur laquelle cette fonction fonctionne, je l'ai déjà dit à plusieurs reprises, il y a un souci là ! (de mémoire, j'ai testé sur 6 types de machines différentes...)

Alors, pour le programme, j'ai rapidement eu envie de mettre une tarte à l'olibrius qui m'a foncé dessus, j'ai pas bien deviné ses intentions, mais j'avais pas envie de me faire rouler une pelle par une tête carrée. Et là, pas moyen : pas de FAMAS, pas d'uzi, pas de coup de boule, rien ! Au s'cours !

Bon, sinon c'est sympa, tu veux faire quoi au juste, t'amuser avec les nodes ? C'a été dur ? Ca m'a l'air compliqué quand même, non ?
M'amuser avec les nodes étaient le principale objectif. Etant nul en conception 3D et n'ayant pas la possibilité d'avoir des meshs animés je voulais voir si il était possible de créer des avatars en utilisant les nodes.

Se faire rouler une pelle par une tête carrée je comprend que ce n'est pas forcément agréable. Pour le moment j'ai pris un mesh basic pour la conception des avatars, mais il est possible de modifier le code pour attacher des meshs plus ressemblant au corps humain (Femme ou homme) je verrais bien une baston avec des zombies par exemple.

J'ai noté ta remarque concernant la fonction WorldShadows(). Effectivement quelques soit le paramètre associé à cette fonction, il y a une IMA à l’exécution sous WIndows 8.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Node et gestion des collisions.

Message par graph100 »

Non, effectivement la rotation permanente ne m'es arrivée qu'une seule fois.. Bizarre

Sinon :

Code : Tout sélectionner

;Help
Help = CreateSprite(#PB_Any, WWidth, 20)
StartDrawing(SpriteOutput(Help))
Box(0, 0, WWidth, 20, RGBA(178,34,34,255))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,2,"T: Sit - R: Run - H:Hand Up - Space : Jump")
StopDrawing()  
Modifie ça dans ton code (tu redessines à chaque boucle !!)

Code : Tout sélectionner

	If ExamineKeyboard()
Aide PB a écrit :ExamineKeyboard()
Description

Met à jour l'état du clavier.
Arguments

Aucuns.
Valeur de retour

Aucune.
le If est inutile.

Je me suis amusé, pas encore touché la caméra mais bon... Il est tard !
Faut coller tout ça à la place de ce qu'il y après
;Help
Help = CreateSprite(#PB_Any, WWidth, 20)

Code : Tout sélectionner

;Help
Help = CreateSprite(#PB_Any, WWidth, 20)
StartDrawing(SpriteOutput(Help))
Box(0, 0, WWidth, 20, RGBA(178,34,34,255))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,2,"T: Sit - R: Run - H:Hand Up - Space : Jump")
StopDrawing()  

Define time_spend.l, IS_Jump.b, jump_speed.d
Define Time_to_jump.l = 300, Jump_Height.d = 4
Define col_1.l, col_2.l

Repeat
	Repeat
		Event  = WindowEvent()
		Select Event
			Case #PB_Event_CloseWindow
				End
				
		EndSelect
	Until Event = 0
	
	ExamineKeyboard()
	
	If KeyboardPushed (#PB_Key_Escape)
		Break
	EndIf
	
	ExamineWorldCollisions(#False)
	
	
	IS_Jump = #True
	While NextWorldCollision()
		col_1 = FirstWorldCollisionEntity()
		col_2 = SecondWorldCollisionEntity()
		
		If col_2 = Player
			Swap col_1, col_2
		EndIf
		
		If col_1 = Player And col_2 <> Av1 And col_2 <> Av2
			IS_Jump = #False
		EndIf
	Wend
	
	;En avant ou en arriére
	If Not SkeletonIsSit(Player)
		If KeyboardPushed (#PB_Key_Up) Or KeyboardPushed (#PB_Key_Z)
			If SkeletonIsRun(Player) = #False
				PlayerSpeed = -2
			Else
				PlayerSpeed = -4
			EndIf 
			SkeletonAnimationPlay(Player, "walk")
			
		ElseIf KeyboardPushed (#PB_Key_Down) Or KeyboardPushed (#PB_Key_S)
			If SkeletonIsRun(Player) = #False
				PlayerSpeed = 2
			Else
				PlayerSpeed = 4
			EndIf 
			SkeletonAnimationPlay(Player, "walk")
			
		Else
			SkeletonAnimationPlay(Player, "wait")
			PlayerSpeed = 0
		EndIf
		
		;A gauche ou à droite
		If KeyboardPushed (#PB_Key_Left) Or KeyboardPushed (#PB_Key_Q)
			RotateEntity(Player, 0, 2, 0, #PB_Relative)
		ElseIf KeyboardPushed (#PB_Key_Right) Or KeyboardPushed (#PB_Key_D)
			RotateEntity(Player, 0, -2, 0, #PB_Relative)      
		EndIf
		
		;Run
		If KeyboardReleased (#PB_Key_R)
			SkeletonAnimationPlay(Player, "run")
		EndIf    
		
		;Jump
		If KeyboardPushed(#PB_Key_Space) And IS_Jump = #False
			jump_speed = Jump_Height
			
			IS_Jump = #True
		EndIf
	Else
		PlayerSpeed = 0
	EndIf 
	
	;Sit
	If KeyboardReleased (#PB_Key_T)
		SkeletonAnimationPlay(Player, "sit")
		If SkeletonIsSit(Player) = #True
			SkeletonSetPosition(Player, 0, -0.80, 0)
		Else
			SkeletonSetPosition(Player, 0, 0.80, 0)
		EndIf
	EndIf    
	
	;Hand Up
	If KeyboardReleased (#PB_Key_H)
		SkeletonAnimationPlay(Player, "handup")
	EndIf    
	
	
	
	If Not SkeletonIsSit(Player)
		If IS_Jump
			jump_speed - (time_spend / Time_to_jump) * 2
		Else
			jump_speed = 0
		EndIf
		
		If PlayerSpeed <> 0 Or IS_Jump = #True	
			DisableEntityBody(Player, 0) ;Bug Fix
			
			MoveEntity(Player, 0, jump_speed, PlayerSpeed, #PB_Absolute|#PB_Local)
		EndIf
		
		
		
		CameraFollow(Camera, EntityID(Player), 45, EntityY(Player) + 3, 8, 0.1, 0.1)   
	Else
		CameraFollow(Camera, EntityID(Player), 220, EntityY(Player)+1, 8, 0.1, 0.1)
	EndIf  
	
	EntityLookAt(Av1, EntityX(Player), EntityY(Av1), EntityZ(Player))
	;MoveEntity(Av1, 0, 0, -1.5, #PB_Absolute|#PB_Local)
	SkeletonAnimationPlay(Av1, "walk")
	;ClearScreen(RGB(0, 0, 0))
	time_spend = RenderWorld(50)
	
	DisplaySprite(Help, 0, WHeight-20)
	
	FlipBuffers()  
ForEver

;Delete files
DeleteFile(GetTemporaryDirectory()+"floor1.jpg")
DeleteFile(GetTemporaryDirectory()+"building1.jpg")
DeleteFile(GetTemporaryDirectory()+"body2.mesh")
Sérieux c'est quoi le problème de MoveEntity() ? Ca fait complètement buguer la physique ! C'est normal ou bien ?!
Et puis c'est absolument pas pratique de pas pouvoir appliquer une force selon une direction relative à l'entity !
même chose pour la vitesse.

Si votre bonhomme se met à partir en vrille parce que vous sautez, attendez un peu au lancement du code avant de bouger :lol:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

Bonjour graph100.
Result = ExamineKeyboard()
Result renvoie 1 si le jeu a le focus et 0 dans le cas contraire. Si en cours de jeu tu ouvres une fenêtre, il sera inutile d'appliquer le code inclus dans la condition.

Snippet Code : Touche I pour ouvrir une fenêtre. Le debug est suffisamment clair.

Code : Tout sélectionner

Enumeration Window
  #Mainform
  #Inventory
EndEnumeration

Enumeration
  #Close
EndEnumeration

Define.l Event

Global WWIdth, WHeight

Procedure InventoryOpen()
  OpenWindow(#Inventory, WWidth-500, 200, 300, 400, "Inventaire", #PB_Window_SystemMenu|#PB_Window_Tool)
EndProcedure


InitEngine3D()
InitKeyboard()
InitSprite()
InitMouse()

OpenWindow(#Mainform,0,0, 0, 0, "", #PB_Window_SystemMenu | #PB_Window_Maximize)
WWidth = WindowWidth(#Mainform, #PB_Window_InnerCoordinate)
WHeight = WindowHeight(#Mainform, #PB_Window_InnerCoordinate)
OpenWindowedScreen(WindowID(#Mainform),0,0,WWIdth,WHeight,0, 0, 0)

KeyboardMode(#PB_Keyboard_International)
 
;
;Lumiere et ombre
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)
WorldShadows(#PB_Shadow_Additive)

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

MoveCamera(Camera, 2, 5, 15, #PB_Absolute)  
CameraLookAt(Camera, 0,0,0)   

Repeat
  Repeat
    Event  = WindowEvent()
    WEvent = EventWindow()
    
    Select Event
      Case #PB_Event_CloseWindow
        Select WEvent
          Case #Inventory
            CloseWindow(#Inventory)
            
          Case #Mainform
            End
        EndSelect
    EndSelect
  Until Event = 0
   
  If ExamineKeyboard()  
    Debug "j'ai le focus"
    If IsWindow(#Inventory)
      CloseWindow(#Inventory)
    EndIf
    
    If KeyboardPushed(#PB_Key_Escape)
      Break
    EndIf
    
    If KeyboardReleased(#PB_Key_I)
      InventoryOpen()
    EndIf
  Else
    Debug "ha mince j'ai perdu le focus"
  EndIf
  
  ; Affiche le rendu de la scène
  ClearScreen(RGB(0, 0, 0))
  RenderWorld(80)
  FlipBuffers()  
  
ForEver


Admirer ce double Event qui évite pas mal d'erreurs dans la gestion de la pile d’événement (je n'ai rien inventer car c'est dans l'aide) :mrgreen:

J'affiche effectivement le sprite après le RenderWorld car il ne s'affiche pas si on tente de l'afficher avant.
Help a écrit :Once the RenderWorld() function has been performed, it's possible to use regular 2D functions like DisplaySprite() to display 2D sprites over the 3D world.
Une fois la fonction RenderWorld () exécuté, il est possible d'utiliser les fonctions 2D comme DisplaySprite () pour afficher des sprites 2D dans le monde 3D​​.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Node et gestion des collisions.

Message par graph100 »

falsam a écrit :J'affiche effectivement le sprite après le RenderWorld car il ne s'affiche pas si on tente de l'afficher avant.
Ce n'est pas ce que je souligne :mrgreen: mais simplement que tu redessines le contenu du sprite à chaque boucle.
Ce qui n'est pas nécessaire.

Et pour le examinekeyboard() il faudrait peut-être le documenter dans l'aide, parce que c'est pratique !

Sinon, t'as pas répondu pour le comportement de MoveEntity(), étant un n00b, je me demande si la modification de comportement du moteur physique après son utilisation est normale :?:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Node et gestion des collisions.

Message par falsam »

graph100 a écrit :Sinon, t'as pas répondu pour le comportement de MoveEntity(), étant un n00b, je me demande si la modification de comportement du moteur physique après son utilisation est normale :?:
Comme l'indique ma signature Je suis aussi un Noob mais je vais jeter un oeil.

PS : Encore merci pour ta réponse sur l'entité invisible. :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Node et gestion des collisions.

Message par graph100 »

Mais de rien :D

Quand tu auras la réponse pour le MoveEntity() (car ce n'est qu'une question de temps ;) ), partage avec nous !! Ça m'interroge vraiment
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre