약 1 개월 동안 작업해온 iPhone 용 게임을 제작 중입니다. 나는 화면의 상단에서 떨어지는 다른 색깔의 공과 플레이어가 시도하고 잡을 수있는 하단의 인장을 가지고 있습니다. 그들은 각각의 새로운 볼과 함께 성장하는 스택을 생성하기로되어 있기 때문에, Scoops와 유사합니다! 현재 앱 스토어에 있습니다. 나는 각각의 새로운 볼 스프라이트를 둘러싼 몸체와 모양을 가지고 있으며 중력의 영향을받습니다. 그러나 인장은 중력에 의해 영향을받을 수는 없지만 첫 번째 공과 각각의 후속 공이 그 공을 때리고 스택에 추가 될 때를 감지하기 위해 충돌 감지 기능이 있어야합니다. applyForce를 시도하고 중력에 맞서는 힘을 적용했습니다. 볼이 씰과 충돌 할 때까지 작동 한 다음 화면에서 떨어집니다. 누군가가 내 코드가 farly 긴 ... 도와주세요 수 있지만 아래 문제의 객체의 주요 부분을 게시 할 수 있습니다 :cocos2d 및 다람쥐 제작 시체가 중력을 무시합니다.
-(void) AddSealSprite {
Seal = [CCSprite spriteWithFile:@"Seal2Inverted.png"];
Seal.position = ccp(160, 0);
[self addChild: Seal z:1];
Seal.tag = 2;
cpBody *SealBody = cpBodyNew(1, INFINITY);
SealBody->p = cpv(160, 0);
cpSpaceAddBody(space, SealBody);
//Creates Seal shape
int NumberOfVerts = 4;
CGPoint SealVerts[] = {
ccp(-60, -60),
ccp(60, -60),
ccp(60, 60),
ccp(-60, 60),
};
cpShape *SealShape = cpCircleShapeNew(SealBody, 100, cpvzero);
SealShape->e = 0.5;
SealShape->u = 1.0;
SealShape->data = Seal;
cpSpaceAddShape(space, SealShape);
// here is my gravity offset...
cpBodyApplyForce(SealBody, cpv(0, NumberOfBallsInStack * 200), cpvzero);
}
와 볼 스프라이트 방법 당신이
-(void) addNewSpriteX: (float)x y:(float)y
{
int posx, posy;
CCSpriteBatchNode *batch = (CCSpriteBatchNode*) [self getChildByTag:kTagBatchNode];
posy = 0;
//New Random sprite code
switch (arc4random() % 5) {
case 0:
posx = 0;
break;
case 1:
posx = 60;
break;
case 2:
posx = 120;
break;
case 3:
posx = 180;
break;
case 4:
posx = 240;
break;
}
CCSprite *sprite = [CCSprite spriteWithBatchNode:batch rect:CGRectMake(posx, posy, 60, 60)];
[batch addChild: sprite];
sprite.position = ccp(x,y);
int num = 4;
CGPoint verts[] = {
ccp(-30, -30),
ccp(-30, 30),
ccp(30, 30),
ccp(30,-30),
};
cpBody *body = cpBodyNew(1.0f, cpMomentForPoly(1.0f, num, verts, CGPointZero));
// TIP:
// since v0.7.1 you can assign CGPoint to chipmunk instead of cpVect.
// cpVect == CGPoint
body->p = ccp(x, y);
cpSpaceAddBody(space, body);
cpShape* shape = cpPolyShapeNew(body, num, verts, CGPointZero);
shape->e = 0.5f; shape->u = 0.5f;
shape->data = sprite;
cpSpaceAddShape(space, shape);
}