PositionSpriteXYZ
PositionSpriteXYZ SpriteIndex, Xpos#, Ypos#, Zpos#
 
Parameters:

    SpriteIndex = The identifier of the sprite you wish to position
    Xpos# = X position of sprite
    Ypos# = Y position of sprite
    Zpos# = Z depth of sprite
Returns: NONE
 

      PositionSpriteXYZ sets the position of a sprite to a specific X, Y and Z coordinate The Z refers to the depth of the sprite. Changing it's depth will not effect the sprites appearance (it won't zoom/scale the sprite in/out), but it does change the sprites draw order priority during rendering. Sprites with a higher Z depth are drawn before sprites with a lower depth. So by setting a sprite to a particular depth you can control what sprites will move in front of or behind, of other sprites on screen.




FACTS:


      * Sprites can not be positioned at negative Z positions.

      * In order to see your sprites drawn based upon their Z depths, you must use DrawOrderedSprites.

      * If your capturing sprite to the scene or world buffer, you can use either DrawALLsprites or DrawOrderedSprites.





Mini Tutorial:


      Create a sprite, set it's XYZ positions, then display this position to the screen.

  
  
  
; Create the Sprite
  CreateSprite 1
  
; Set this sprites entities X and Y Positions to 100x,200y
  PositionSpriteXYZ 1100,200,300
  
; Read and display sprite 1's position X,Y and Z position to the screen.
  Print GetSpriteX(1)
  Print GetSpriteY(1)
  Print GetSpriteZ(1)
  
  
; Display the Screen and wait for the user to press a key
  Sync
  WaitKey
  



This example would output.

  
  100.0
  200.0
  300.0
  

 
Example Source: Download This Example
;-----------------------------------------------------------
; PositionSpriteXYZ Example
;-----------------------------------------------------------
  
; =========================================================
; First Create an Image, with a random circle pattern on it.
; =========================================================
  Size=95
  Circle_Image=NewImage(Size,Size)
  RenderToImage Circle_Image
  Randomize 48
  For lp=size/2 To 1 Step -1
     CircleC Size/2,Size/2,lp,1,RndRGB()
  Next
  RenderToScreen
  
  
; =========================================================
; Create 15 sprites and position them with acsending Z order, with
; each overlaping the previous just a little.
; ========================================================
  NumberOfSprites=15
  x=10
  y=150
  xspacing=size/2
  For ThisSprite=1 To NumberOfSprites
   ;CReate this sprite
     CreateSprite ThisSprite
   ; Set each Sprite to use our circle image for
   ; it's artwork to display.
     SpriteImage ThisSprite,Circle_Image
   ; Randomly position this sprite within the screen
     PositionSpriteXYZ ThisSprite,x,y,ThisSprite
     x=x+xspacing
  Next
  
  
  
; Tell PB to limit speed of the program to 60 Frames
; (updates) per second or bellow
  SetFPS 30
  
  
  CurrentSprite=1
  
  
; Start out update loop
  Do
   ; Clear the Screen to back   0= rgb(0,0,0)
     Cls 0
   ; Display a message
     Ink $ff00
     Print "Rendering sprites on thier Z order"
     Print "===================================="
     Print " Use LEFT/RIGHT arrows to change selected sprite"
     Print " Use UP/DOWN arrows to change sprites depth"
     
     
     
     
     
   ; Tell Pb to Draw all the sprites, but in ORDER.
   ;From the highest depth to lowest.
     DrawOrderedSprites
     
     
   ; Display the Sprite Numbers bellow the Sprites
     For ThisSprite=1 To NumberOfSprites
        X=GetSpriteX(ThisSprite)
        Y=GetSpriteY(ThisSprite)
        Z=GetSpriteZ(ThisSprite)
        If currentSprite=ThisSprite
           Ink RGB(255,255,255)
        Else
           Ink RGB(0,0,200)
        EndIf
        Text x+(size/2),y+120,Digits$(thissprite,2)
        Text x+(size/2),y+140,Digits$(z,4)
        
     Next
     
   ; Use Left arrows to move forward back through the sprites..
     
     If LeftKey() Then Dec currentsprite
     If RightKey() Then Inc currentsprite
     CurrentSprite=ClipRange(currentsprite,1,NumberOfSprites)
     
   ; Use Up/down Arrows To change the Z of the current
   ; selected Sprite
     
     Z=GetSpriteZ(currentsprite)
     If UpKey() Then Inc z
     If DownKey() Then Dec z
     z=ClipRange(z,1,1000)
     PositionSpriteZ currentsprite,z
     
     
     
     
     
   ; Display the screen and loop back to the DO statement to
   ; continue the loop
     Sync
  Loop
 
Related Info: GetSpriteX | GetSpriteY | GetSpriteZ | PositionSprite | PositionSpriteX | PositionSpriteY | PositionSpriteZ :
 


(c) Copyright 2002 - 2024 - Kevin Picone - PlayBASIC.com