【问题标题】:How to make child nodes ineffective to parent nodes rotation?如何让子节点对父节点轮换无效?
【发布时间】:2015-12-14 14:44:17
【问题描述】:

我试图将SKEmitterNode 添加到小球SKSpriteNode 中。但同时,我是rotating 我的球节点。但问题是,球节点的旋转会导致发射器节点旋转(因为发射器节点是球节点的子节点)。有什么办法可以不旋转发射器节点,而是旋转球节点?

我将球节点添加为:

SKSpriteNode * ball = [SKSpriteNode spriteNodeWithImageNamed:imageName];
ball.name=name;
ball.size=size;
ball.anchorPoint=CGPointMake(0, 0);

[self addChild:ball];

我将发射器节点添加为:

 SKEmitterNode *burstEmitter =
 [NSKeyedUnarchiver unarchiveObjectWithFile:_emitterNodePath];
 [ball addChild:burstEmitter];

当球撞到墙上时,我正在旋转球:

-(void)didBeginContact:(SKPhysicsContact *)contact
{

  SKSpriteNode * firstNode = (SKSpriteNode*)contact.bodyA.node;
  SKSpriteNode *  secondNode = (SKSpriteNode *)contact.bodyB.node;
  if (firstNode.physicsBody .categoryBitMask == wallHitCategory ||  secondNode.physicsBody.categoryBitMask == wallHitCategory) {

        NSLog(@"first sound and then rotate ball");
        [self runAction:[SKAction playSoundFileNamed:@"basketBall bounce.WAV" waitForCompletion:NO]];
        secondNode.anchorPoint=CGPointMake(0.5, 0.5);
            [secondNode runAction:[SKAction rotateByAngle:degToRad(180.0f) duration:3.0]];

    }
}

是否可以旋转父节点而不是子节点?

【问题讨论】:

  • 我不知道它会有多大帮助,但是您可以将子节点旋转到与父节点相反的方向,然后它可能会足够平滑,以至于眼睛不会看到变化,因为对于另一种方法,也许 pinJoint 可能会有所帮助-希望对您有所帮助
  • 有什么理由你不能创建一个不可见的节点,球和发射器节点都是子节点?然后不可见节点将确定它们的位置,但球节点将独立于发射器旋转。
  • 不,我不这么认为。这应该是一个很好的 hack 让它工作。我也要试试!!!谢谢@SeanG
  • user3351949 和 SeanG 都提供了很好的答案,应该让他们这样回答以获得适当的选票和信誉。基本上我将如何设计这是,如果只有 1 个孩子不听父母的旋转,使用 user3351949 的答案,如果多个孩子不旋转,使用 SeanGs 答案,而是创建一个父节点,2 个子节点(一个一个旋转,一个不旋转)并将所有其他节点放置在父节点的各自子节点中
  • 你的意思是 SeanG 回答@Knight0fDragon 吗?我没有提供任何答案;)

标签: ios sprite-kit skspritenode skemitternode


【解决方案1】:

您可以将子节点旋转到与父节点相反的方向,然后它可能会足够平滑以至于眼睛不会看到变化, 至于另一种方法,也许 pinJoint 会有所帮助

还有一个SeanG的评论也不错!我更喜欢这个解决方案 因为这似乎是更好的 CPU 性能 - 明智的!

拥有一个不可见节点作为球和发射器节点的父节点,那么当您旋转球时,发射器节点不会受到旋转的影响。

  • 希望对您有所帮助

【讨论】:

    【解决方案2】:

    我将发表我的评论作为答案,因为听起来它没有理由不起作用。

    我会亲自创建一个主节点,发射器和精灵节点都是其子节点。如果您所做的只是添加子节点,则父节点实际上是不可见的。然后您可以将父节点作为一个整体移动,但单个子节点可以独立旋转。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多