SKAction缩放physicsBody。

5

我不太知道从哪里开始。我有一个存储在SKSpriteNode中的圆形图像和一个physicsBody,当它被创建时,它会镜像大小。

然而,我正在使用一个SKAction来缩小图像的大小,但是physicsBody的大小保持不变。我该如何缩小physicsBody的大小?

我的代码:

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"whiteball"];

    sprite.size = CGSizeMake(20, 20);
    sprite.position = CGPointMake(dx, CGRectGetHeight(self.frame)-dy);
    sprite.name = @"ball";
    sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2];

    [self addChild:sprite];

    SKNode *ballNode = [self childNodeWithName:@"ball"];

    if (ballNode != Nil){
        ballNode.name = nil;

        SKAction *delay = [SKAction waitForDuration:3];
        SKAction *scale = [SKAction scaleTo:0 duration:1]; // I want this to scale the physicsBody as well as the spriteNode...
        SKAction *remove = [SKAction removeFromParent];

        //put actions in sequence
        SKAction *moveSequence = [SKAction sequence:@[delay, scale, remove]];

        //run action from node (child of SKLabelNode)
        [ballNode runAction:moveSequence];
    }

物理体形状不能被缩放。缩放物理形状会带来一系列问题。尝试搜索,以前有关于此的问题,并提供了一些解决方法。 - CodeSmile
以上是关于https://dev59.com/kXfZa4cB1Zd3GeqPWtio#19305700的讨论。 - DogCoffee
@maxud 不确定这是否完全适用于你的问题,但是请查看这个链接 https://dev59.com/VYHba4cB1Zd3GeqPP1Z1#33572073。 - Whirlwind
1个回答

0
如果你将物理体的大小设为圆圈的大小,你可能会实现你想要的效果。
_circle = [SKSpriteNode spriteNodeWithImageNamed:@"cirlce"];
_circle.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_circle.size.width/2];

6
这个答案是怎么被采纳的?它和问题中的代码完全一样。 - Attackfarm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接