Мне было интересно, если кто-нибудь знает, как я буду прикреплять CCSprite
к cpConstraint
и обновить его с помощью физики. Вот мой код:Использование CCSprites в Cocos2d
upper = [game.spaceManager addPolyAt:cpv(70,195) mass:300 rotation:0 numPoints:6 points:cpv(2,12), cpv(28,8), cpv(33,0), cpv(36,-10), cpv(-33,-10), cpv(-20,8)];
upper->collision_type = kTireCollisionType;
cpShape *lower = [game.spaceManager addPolyAt:cpv(70,125) mass:300 rotation:0 numPoints:7 points:cpv(34,8), cpv(31,0), cpv(25,-9), cpv(7,-13), cpv(-20,-8), cpv(-30,0), cpv(-35,8)];
lower->collision_type = kTireCollisionType;
//HIT POINT
cpShape *sensor = [game.spaceManager addCircleAt:cpv(70,160) mass:10 radius:10];
sensor->sensor = YES;
sensor->collision_type = kScoreCollisionType;
cpShape *sensor2 = [game.spaceManager addCircleAt:cpv(70, 160) mass:10 radius:10];
sensor2->sensor = YES;
//Combine them into one body!
[game.spaceManager combineShapes:upper, lower, sensor, sensor2, nil];
//The "rope"
cpVect a1 = cpv(0,30); //Local coordinates of tire
cpVect a2 = cpv(70,320); //World coordinates (staticBody is at (0,0))
//calculate the length of the rope
float max = cpvdist(cpBodyLocal2World(upper->body, a1), a2);
cpConstraint *rope = [game.spaceManager addSlideToBody:upper->body fromBody:game.spaceManager.staticBody toBodyAnchor:a1 fromBodyAnchor:a2 minLength:1 maxLength:max];
cpConstraintNode *ropeNode = [cpConstraintNode nodeWithConstraint:rope];
ropeNode.color = ccBLUE;
[game addChild:ropeNode];
//Attach a sprite to the sensor, lucky for us it's exactly in the center
//of the tire... otherwise this wouldn't work
[game addChild:[super initWithShape:sensor file:@"TractorTireFront.png"] z:3];
[game addChild:[cpCCSprite spriteWithShape:sensor2 file:@"TractorTireBack.png"] z:1];
ivGame = game;
//Free the shape when we are released
self.spaceManager = game.spaceManager;
self.autoFreeShape = YES;
[self schedule:@selector(step:) interval:.1];
return self;
Это код для метода init
. У меня есть шина на экране, и, как вы видите, есть cpConstraint
, действующий как веревка, висящая сверху экрана и прикрепленная к верхней части шины. Я хочу как-то присоединить CCSprite
к этому ограничению и обновить его с помощью качания шины или если есть другой способ использовать CCSprite
и обновить его с помощью качания шины.
Я использую cocos2d + spaceManager. Я слышал, как люди говорят, что просто используют CCSprite
и обновляют его с помощью движений шин, но я недостаточно хорошо знаком с cocos2d или spaceManger, чтобы это сделать, поэтому, если у кого-то есть фрагменты кода или учебник, показывающий, как я могу это сделать Я был бы очень признателен.
могли бы хотеть, чтобы отделить это на более мелкие вопросы, я думаю, много людей перегружены размером этих сообщений ... Просто скажите – tallen11
Я не знаю, как бы я отделял этот вопрос. – Stephen