0

SKNode のシャドウでグループ化された SKSpriteNode でいくつかのアクションを実行しようとしています。平行移動は正しく機能しますが、回転は依然として問題です。

次のようにシャドウの追加を実装しました。

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

どなたかご指導いただけると幸いです。

よろしく、

ネスリサ。

4

0 に答える 0