Вращение SKSpriteNode, сгруппированного с его тенью

Я пытаюсь выполнить некоторые действия на SKSpriteNode, сгруппированном с его тенью в SKNode. Перевод работает корректно, но проблема с вращением.

Я реализовал добавление тени следующим образом:

- (SKNode *) addShadow:(NSString *) nodeName At:(CGPoint) pos
{
    float halfWdth = self.frame.size.width / 2.f;
    float halfHght = self.frame.size.height / 2.f;

    SKEffectNode *shadowEffect = [[SKEffectNode alloc] init];
    shadowEffect.shouldEnableEffects = YES;

    SKNode *shadowNode = [[SKNode alloc] init];

    SKSpriteNode *shadow = [self copy];
    shadow.color = [SKColor blackColor];
    shadow.colorBlendFactor = 0.9;
    shadow.blendMode = SKBlendModeAlpha;
    [shadow setAlpha:0.7];
    shadowEffect.filter = [self blurFilter];
    shadow.position = CGPointMake(halfWdth + SHADOW_DELTA, halfHght);
    shadow.zPosition = -10;
    shadowEffect.name = @"shadow";
    shadowEffect.blendMode = SKBlendModeAlpha;
    [shadowEffect addChild:shadow];

    self.zPosition = 3;
    self.position = CGPointMake(halfWdth, halfHght + SHADOW_DELTA);

    [shadowNode addChild:shadowEffect];
    [shadowNode addChild:self];

    shadowNode.name = nodeName;
    shadowNode.position = pos;
    shadowNode.zPosition = 3;

    SKNode *container = [[SKNode alloc] init];
    container.name = nodeName;

    CGRect groupRect = [shadowNode calculateAccumulatedFrame];
    halfWdth = groupRect.size.width / 2.f;
    halfHght = groupRect.size.height / 2.f;

    shadowNode.position = CGPointMake(-halfWdth, -halfHght);

   [container addChild:shadowNode];
   container.position = CGPointMake(pos.x + halfWdth, pos.y + halfHght);

   return (container);

}

Я нашел ссылку Поворот и масштабировать ПОЛОЖЕНИЕ нескольких спрайтов на основе центральной точки?. Однако я не смог решить свою проблему.

Я использовал следующие сегменты кода для перевода и поворота;

Перевод:

 SKAction *moveAction = [SKAction moveBy:CGVectorMake(-2.f, mMoveY) duration:0.2f];

 [paper runAction:moveAction completion:
 ^{
      [self processHelp:@"help3];     
  }];

Вращение:

 SKAction *rotateAction = [SKAction rotateByAngle:0.75f * M_PI duration:0.4f];
[mainNode runAction:rotateAction];

Я был бы рад, если бы кто-то мог направить меня.

С уважением,

Неслиса.


person Neslisah    schedule 03.03.2014    source источник
comment
Пожалуйста, добавьте код, который вы используете для поворота спрайта. Также добавьте код, который вы используете для перевода узла.   -  person ZeMoon    schedule 03.03.2014
comment
Я отредактировал свой вопрос с переводом и вращением, спасибо.   -  person Neslisah    schedule 04.03.2014
comment
В чем проблема?   -  person bio    schedule 02.06.2019