J'ai deux images-objets statiques (STATIC_MASS) SpaceManager. L'un est un enfant de l'autre - je veux dire par là que l'un construit l'autre, mais bien que les images de l'enfant apparaissent au bon endroit, l'enfant ne semble pas exister dans le moteur de la physique tamia, comme je J'attendrais. Dans mon cas, j'ai un panneau (sprite rectangulaire) et un cerceau (un sprite circulaire). Puisque je pourrais vouloir déplacer le panneau arrière, je voudrais attacher le cerceau au panneau arrière de sorte que le cerceau bouge automatiquement juste avec le panneau arrière.Comment faire pour qu'une image-objet statique soit l'enfant d'une autre image-objet dans cocos2D lors de l'utilisation de SpaceManager
Ici, nous voyons un panneau tournant avec un arceau attaché. Cela semble correct sur l'écran, mais d'autres objets rebondissent seulement sur le panneau mais passent à travers le cerceau (dans un mauvais sens du terme). Qu'est-ce que mon sprite ne semble pas exister dans le moteur physique?
// Add Backboard
cpShape *shapeRect = [smgr addRectAt:cpvWinCenter mass:STATIC_MASS width:200 height:10 rotation:0.0f ];// We're upgrading this
cpCCSprite * cccrsRect = [cpCCSprite spriteWithShape:shapeRect file:@"rect_200x10.png"];
[self addChild:cccrsRect];
// Spin the static backboard: http://stackoverflow.com/questions/2691589/how-do-you-make-a-sprite-rotate-in-cocos2d-while-using-spacemanager
// Make static object update moves in chipmunk
// Since Backboard is static, and since we're going to move it, it needs to know about spacemanager so its position gets updated inside chipmunk.
// Setting this would make the smgr recalculate all static shapes positions every step
// cccrsRect.integrationDt = smgr.constantDt;
// cccrsRect.spaceManager = smgr;
// Alternative method: smgr.rehashStaticEveryStep = YES;
smgr.rehashStaticEveryStep = YES;
// Spin the backboard
[cccrsRect runAction:[CCRepeatForever actionWithAction:
[CCSequence actions:
[CCRotateTo actionWithDuration:2 angle:180],
[CCRotateTo actionWithDuration:2 angle:360],
nil]
]];
// Add the hoop
cpShape *shapeHoop = [smgr addCircleAt:ccp(100,-45) mass:STATIC_MASS radius: 50 ];
cpCCSprite * cccrsHoop = [cpCCSprite spriteWithShape:shapeHoop file:@"hoop_100x100.png"];
[cccrsRect addChild:cccrsHoop];
Le code ci-dessus est un peu brouillé. L'image du cerceau apparaît à côté du tableau, ce que je veux, si je détecte des collisions, la collision ne se produit que dans la partie inférieure gauche de l'écran. Bizarrement, même si je détecte une collision, mon objet ne semble pas vraiment entrer en collision, il le traverse simplement au lieu de rebondir.
Note: SpaceManager est une boîte à outils pour travailler avec Cocos2d-iphone
Note de la balise: Cela devrait probablement avoir une balise 'spacemanager' –