ShapeHitSprite
CollisionFlag = ShapeHitSprite(ShapeIndex, ShapeX#, ShapeY#, SpriteIndex)
 
Parameters:

    ShapeIndex = The Shape you wish to test
    ShapeX# = The X coordinate of the shape
    ShapeY# = The Y coordinate of the shape
    SpriteIndex = The Sprite to check for collision against
Returns:

    CollisionFlag = The result of the collision query (0= No collision ,1 = Collision)
 

      The ShapeHitSprite function returns if a collision occurs between a vector shape and a sprite. When testing the sprite the ShapeHitSprite command uses the sprites current collision mode as the hard region of the sprite.



FACTS:


      * ShapeHitSprite uses the sprites collision mode as the hard region of the sprite.

      * See SpriteCollisionMode for more information about collision modes.




Mini Tutorial:


      This example creates a random image, creates 10 randomly positioned sprites on the screen using this image. The main loop rotates the sprites while scans them for collisions using ShapeHitSprite



  
; Make a Blue image, with circle on it
  Cls RGB(0,0,255)
  For lp =0 To 100
     CircleC Rnd(100),Rnd(100),Rnd(5),1,RndRGB()
  Next
  GetImage 1,0,0,100,100
  PrepareFXImage 1
  
; Make 10 sprites
  For spr=1 To 10
     
   ; Create the sprite
     CreateSprite Spr
     
   ; position the spriote randomly on the screen
     x=Rnd(GetScreenWidth())
     y=Rnd(GetScreenHeight())
     PositionSprite Spr,x,y
     
   ; assign this sprite Image #1
     SpriteImage Spr,1
     
     CenterSpriteHandle spr
     SpriteCollision spr,on
     
   ; Set sprite collision to Rotated rectangles
     SpriteCollisionMode Spr,1
  Next
  
  
; Create Convex Test for collison
  CreateConvexShape 1,150,10
; create a smaller convex shape
  CreateConvexShape 2,110,4
; merge the two shapes
  MergeShape 2,1
  
  
  
  
  Do
     Cls RGB(0,0,0)
     
   ; Check if the mouse  is over a sprite
     mx#=MouseX()
     my#=MouseY()
     
     
     
     DrawShape 1,mx#,my#,3
     
   ; start for/next loop from 1 to 10
     For spr=1 To 10
        
      ; Turn this sprite
        TurnSprite spr,spr*0.33
        
      ; Check if a Polygon is over this sprite
        If ShapeHitSprite(1,mx#,my#,Spr)=true
         ; if the mouse pointer over sprite
         ; then make it flash
           SpriteDrawMode Spr,2+4096
        Else
         ; Set it's draw mode to just rotated
           SpriteDrawMode Spr,2
        EndIf
        
     Next
     
     
     DrawAllSprites
     
     Sync
  Loop
  
  
  





 
Related Info: CircleHitSprite | CompareSpritePixels | EllipseHitSpritePixels | LineHitSpritePixels | PointHitSprite | PointHitSpritePixels | QuadHitSprite | QuadHitSpritePixels | RectHitSprite | RectHitSpritePixels | ShapeHitSpritePixels | SpriteCollisionMode | SpriteHit | TriangleHitSpritePixels :
 


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