Как заставить вращаться спрайт в cocos2D при использовании SpaceManager - PullRequest
1 голос
/ 22 апреля 2010

У меня просто простой спрайт - как мне заставить его вращаться?

Хороший ответ показал бы, как вращать динамический и спрайт static_mass

Ответы [ 2 ]

1 голос
/ 04 марта 2011

При использовании cocos2d

используйте этот код в галочке, чтобы обновлять положение все время. _Number1.position - это позиция, до которой вы будете обновляться, поэтому, когда _number1 перемещается, _logo2 поворачивается лицом к нему. _logo2.rotation = CC_RADIANS_TO_DEGREES (-ccpToAngle (ccpSub (_number1.position, _logo2.position)));

обновление _logo1 поворота на ощупь, поместите этот код в обработчик событий касания

_logo2.rotation = CC_RADIANS_TO_DEGREES(-ccpToAngle(ccpSub(location, _logo2.position)));

используйте это как действие

[_logo2 runAction:[CCRotateTo actionWithDuration:0.0 angle:CC_RADIANS_TO_DEGREES(-ccpToAngle(ccpSub(location, _logo2.position)))]];

надеюсь, что это поможет кому-то взяться за это на веки

1 голос
/ 22 апреля 2010

Если спрайт динамический / нестатический, просто сделайте так:

 cpBodySetAngVel(ObjSmSprite.shape->body,0.25); 

Для статического тела вы можете сделать что-то вроде этого:

[ObjSmStaticSprite.shape runAction:[CCRepeatForever actionWithAction:
                         [CCSequence actions:
                          [CCRotateTo actionWithDuration:2 angle:180],
                          [CCRotateTo actionWithDuration:2 angle:360],
                          nil]

                         ]];


smgr.rehashStaticEveryStep = YES; //Setting this would make the smgr recalculate all static shapes positions every step

Подвести итогВот вращающийся статический спрайт, следующий за вращающимся динамическим спрайтом.

  // 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];

  // 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(winSize.width/2.0f,winSize.height/2.0f - 55.0f) mass:1.0 radius: 50 ];
  cpCCSprite * cccrsHoop = [cpCCSprite spriteWithShape:shapeHoop file:@"hoop_100x100.png"];
    [self addChild:cccrsHoop];
  cpBodySetAngVel(cccrsHoop.shape->body,0.25); 

Отказ от ответственности: я пытаюсь ответить на свой собственный вопрос, и в этом ответе могут отсутствовать важные тонкости - он просто отражает то, что я знаюПока.

...