Have you tried using?
SetSpriteShape( iSpriteIndex,3 )
This should attempt to auto generate a polygonal shape.
If you have and you're just not satisfied with it, here's how I believe SetSpriteShapePolygon works.
The documentation says "numPoints" can be anywhere from 2 - 12 points. So the "index" is a reference to each point and the X and Y are the position of the point (Probably based on the sprite's offset). AppGameKit will use this data to draw a line between each point to create the shape.
For example (Just made up the code on the spot, might not be 100% accurate):
SetSpriteShapePolygon( 1,4,0,-GetSpriteWidth( 1 ) / 2.0,-GetSpriteHeight( 1 ) / 2.0 )
SetSpriteShapePolygon( 1,4,1,-GetSpriteWidth( 1 ) / 2.0 + 20,-GetSpriteHeight( 1 ) / 2.0 )
SetSpriteShapePolygon( 1,4,2,-GetSpriteWidth( 1 ) / 2.0 + 20,-GetSpriteHeight( 1 ) / 2.0 + 50 )
SetSpriteShapePolygon( 1,4,3,-GetSpriteWidth( 1 ) / 2.0,-GetSpriteHeight( 1 ) / 2.0 + 50 )
EDIT: It's important to note that the index starts at 0
EDIT: Here's some test code that works:
SetVirtualResolution( 1280,720 )
Global boxSprite : boxSprite = CreateSprite( 0 )
SetSpriteSize( boxSprite,200,500 )
SetSpritePositionByOffset( boxSprite,GetVirtualWidth( ) / 2.0,GetVirtualHeight( ) / 2.0 )
SetSpriteShapePolygon( boxSprite,4,0,-GetSpriteWidth( boxSprite ) / 2.0,-GetSpriteHeight( boxSprite ) / 2.0 )
SetSpriteShapePolygon( boxSprite,4,1,-GetSpriteWidth( boxSprite ) / 2.0 + 200,-GetSpriteHeight( boxSprite ) / 2.0 )
SetSpriteShapePolygon( boxSprite,4,2,-GetSpriteWidth( boxSprite ) / 2.0 + 200,-GetSpriteHeight( boxSprite ) / 2.0 + 500 )
SetSpriteShapePolygon( boxSprite,4,3,-GetSpriteWidth( boxSprite) / 2.0,-GetSpriteHeight( boxSprite ) / 2.0 + 500 )
SetPhysicsDebugOn( )
Do
Sync( )
Loop
Hopefully this helps
EDIT: I had some spare time so I decided to make this tool using DBPro. I've attached the download for it to this post. Hopefully it's useful.
Sean