代码之家  ›  专栏  ›  技术社区  ›  Alexandre Ouicher

SKPhysics身体尺寸与resizeToHeight

  •  0
  • Alexandre Ouicher  · 技术社区  · 10 年前

    在调整skspritenode的大小后,物理体的大小有问题。

    我的代码:

    backTop.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:backTop.size];
    [backTop.physicsBody setAffectedByGravity:NO];
    [backTop.physicsBody setDynamic:NO];
    [backTop.physicsBody setCategoryBitMask:kPipeCategory];
    [backTop.physicsBody setCollisionBitMask:kPlayerCategory];
    backTop.physicsBody.usesPreciseCollisionDetection = YES;
    
    //SKAction
    SKAction *scaleBackTopActionStart = [SKAction resizeToHeight:backTop.size.height+kPipeGap duration:kPipeScale];
    SKAction *scaleBackTopActionEnd = [SKAction resizeToHeight:pipeTop.size.height duration:kPipeScale];
    SKAction *scaleBackTopSequence = [SKAction sequence:@[[SKAction waitForDuration:kPipeScaleStartWait],scaleBackTopActionStart, scaleBackTopActionEnd, [SKAction waitForDuration:kPipeScaleWait]]];
    

    问题:

    skspritenode被调整了大小,但他的物理体不跟随。 你有主意吗?

    2 回复  |  直到 10 年前
        1
  •  4
  •   CodeSmile Paul Beusterien    10 年前

    比例只是一种视觉特性,它不适用于物理物体。除了创建具有适当缩放形状的新实体之外,没有其他方法缩放物理实体。

        2
  •  0
  •   Alexandre Ouicher    10 年前

    通过@LearnCos2D评论,我发现了这一变化(改变高度元素并将其移动:

    SKSpriteNode *backTop = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(pipeTop.size.width,pipeTop.size.height+kPipeGap)];
    [backTop setCenterRect:CGRectMake(26.0/kPipeWidth, 26.0/kPipeWidth, 4.0/kPipeWidth, 4.0/kPipeWidth)];
    [backTop setPosition:CGPointMake(self.size.width+(pipeTop.size.width/2), self.size.height-(pipeTop.size.height/2)+(kPipeGap/2))];
    
    SKAction *scaleBackTopActionStart = [SKAction moveToY:backTop.position.y-kPipeGap/2 duration:kPipeScale];
    SKAction *scaleBackTopActionEnd = [SKAction moveToY:backTop.position.y duration:kPipeScale];