I use Box2D shape vertices in my app and I have implemented it like so:
b2Vec2 verts[] = {
b2Vec2(-25.6f / PTM_RATIO) *scale, (50.7f / PTM_RATIO) *scale),
b2Vec2(-20.6f / PTM_RATIO) *scale, (-48.0f / PTM_RATIO) *scale),
b2Vec2(27.3f / PTM_RATIO) *scale, (-48.0f / PTM_RATIO) *scale),
b2Vec2(21.5f / PTM_RATIO) *scale, (51.5f / PTM_RATIO) *scale),
b2Vec2(-26.8f / PTM_RATIO) *scale, (49.8f / PTM_RATIO) *scale) };
spriteShape.Set(verts, num);
Now obviously my verts are scaled to 'scale', the scale of my CCSprite. Now do I have to also scale the b2Body or something also? Currently, I am not and I think that is the reason why when I use debug draw, my sizes are skewed. I don't need any complicated answer, its just a Yes or No question. :)
Also as a quick side question, if I have a PLIST containing the values for the vertices for one of my images, do I need a PLIST just for the iPhone or the iPhone and iPad or, all 4 possibilities, retina and non-retina both devices?
Can anyone clarify this?
Yes. If you scale your sprite (for example via scale property) you will have to scale the Box2D shape as well.
Since Retina devices use the same screen size in points (ie 480x320 points on Retina iPhone) you only need one shape for Retina and non-Retina devices. In fact, unless you scale your iPad game's assets, you can use the same shapes on iPad and iPad Retina too.