■ En 3D il est possible d'avoir les coordonnées d'une entité avec les fonctions EntityX(), EntityY() et EntityZ()
Serait il possible d'avoir la même chose en 2D avec les fonctions SpriteX() et SpriteY() ?
■ Serait il possible aussi d'avoir une fonction pour déplacer en pourcentage le point de rotation (ou d'ancrage) d'un sprite ? Exemple: AnchorSprite(Sprite, 0, 0.5)
AnchorSprite(Sprite, 0.5, 0.5) permet d'avoir un point d'ancrage au milieu.
SpriteX() SpriteY()
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
SpriteX() SpriteY()
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- microdevweb
- Messages : 1798
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: SpriteX() SpriteY()
Il est vrai que cette fonction AnchorSprite(Sprite, 0.5, 0.5), serait bien utile ainsi qu'un FlipSprite() (sans devoir passé par TransformSprite() beaucoup plus compliqué)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: SpriteX() SpriteY()
pour le flipsprite() avec transformsprite(), ça ne marche pas (sauf en openGL)
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: SpriteX() SpriteY()
Comment ça ? mais que nénni mon bon Blendmanblendman a écrit :pour le flipsprite() avec transformsprite(), ça ne marche pas (sauf en openGL)
Code : Tout sélectionner
#Sprite0 = 0
#Sprite1 = 1
#Sprite2 = 2
#Sprite3 = 3
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Ooops ", "Impossible d'intialiser DirectX", 0)
End
EndIf
Win = OpenWindow(#PB_Any, 0, 0, 800, 600, "Sprite Rotation", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(win), 0, 0, WindowWidth(win), WindowHeight(win))
;Disable Backface Culling
Define pd3d.IDirect3DDevice9
EnableASM
!extrn _PB_Screen_Direct3DDevice
!MOV dword EAX, [_PB_Screen_Direct3DDevice]
!MOV dword [v_pd3d],EAX
DisableASM
pd3d\SetRenderState(22,1)
pd3d\SetRenderState(7,0)
;Define font
fontID=LoadFont(0, "Arial", 22, #PB_Font_Bold|#PB_Font_HighQuality|#PB_Font_Italic)
;Create #Sprite0
CreateSprite(#Sprite0, 200, 65, #PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Sprite0))
;Text
Box(0, 0, 200, 65, RGB(0, 0, 0))
DrawingMode(#PB_2DDrawing_Transparent|#PB_2DDrawing_AlphaBlend)
DrawingFont(fontID)
DrawText(20, 10, "PURE BASIC", RGBA(255, 255, 255, 255))
;Left border
DrawingMode(#PB_2DDrawing_Gradient|#PB_2DDrawing_AlphaBlend)
BackColor(RGBA(255, 255, 0, 255))
GradientColor(0.8, RGBA(255, 0, 0, 50))
FrontColor(RGBA(200, 70, 10, 255))
LinearGradient(0, 0, 0, 65)
Box(0, 0, 16, 65)
ResetGradientColors()
BackColor(RGBA(255, 255, 255, 255))
GradientColor(0.6, RGBA(150, 150, 150, 255))
FrontColor(RGBA(255, 255, 255, 255))
LinearGradient(25, 53, 30, 70)
For i=0 To 8
Box(20+i*20, 45, 10, 10)
Next
;Sprite and border outline
DrawingMode(#PB_2DDrawing_Outlined|#PB_2DDrawing_AlphaBlend)
FrontColor(RGBA(255, 255, 255, 255))
Box(0, 0, 200, 65) ;Sprite
Box(0, 0, 16, 65) ;Left border
StopDrawing()
TransparentSpriteColor(#Sprite0, RGB(0, 0, 0))
;three other sprites
CopySprite(#Sprite0, #Sprite1)
CopySprite(#Sprite0, #Sprite2)
CopySprite(#Sprite0, #Sprite3)
Rh = 1
Rv = 1
Repeat
ClearScreen(RGB(0,0,0))
;#Sprite0 : Horizontal Rotate
x+Rh
TransformSprite(#Sprite0, x,0, SpriteWidth(#Sprite0)-x,0, SpriteWidth(#Sprite0)-x,SpriteHeight(#Sprite0), x, SpriteHeight(#Sprite0))
If x>SpriteWidth(#Sprite0) ;
Rh=-1
ElseIf X=0
Rh=1
EndIf
;#Sprite1 : Vertical Rotate
y+Rv
TransformSprite(#Sprite1, 0,y, SpriteWidth(#Sprite1),y, SpriteWidth(#Sprite1),SpriteHeight(#Sprite1)-y, 0,SpriteHeight(#Sprite1)-y)
If y>SpriteHeight(#Sprite1)
Rv=-1
ElseIf y=0
Rv=1
EndIf
;#Sprite2 : Vertical Rotate
RotateSprite(#Sprite2, 1, #PB_Relative)
RotateSprite(#Sprite3, 180, #PB_Absolute)
;Show sprites
DisplayTransparentSprite(#Sprite0, 150, 100)
DisplayTransparentSprite(#Sprite1, 450, 100)
DisplayTransparentSprite(#Sprite2, 150, 350)
DisplayTransparentSprite(#Sprite3, 450, 350)
ExamineMouse()
ExamineKeyboard()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: SpriteX() SpriteY()
Chez moi, avec pb 5.31/Win8, j'ai un polink error (j'ai désactivé l'unicode, même résultat).
Message :
Par contre, ça marche avec pb 5.22
dommage, là, je code animatoon sur la 5.31, car des bugs sont corrigés dessus (les blendmodes)
Message :
( ça doit être la ligne 19).unresolved external symbol _pb_screen_direct3D_device
Par contre, ça marche avec pb 5.22
dommage, là, je code animatoon sur la 5.31, car des bugs sont corrigés dessus (les blendmodes)
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: SpriteX() SpriteY()
Fonctionne avec la version 5.31 (x86) sous Windows 7 & 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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: SpriteX() SpriteY()
je vais installer la x86 pour tester ça .falsam a écrit :Fonctionne avec la version 5.31 (x86) sous Windows 7 & 8
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english