在Sprite Kit中停止节点旋转

时间:2015-10-26 19:33:27

标签: sprite-kit

我无法弄清楚如何阻止节点旋转。 为什么允许报价不能禁用呢? 以下是我描述节点的方式:

SKSpriteNode *badguy = [SKSpriteNode spriteNodeWithTexture:[self.spriteAtlas textureNamed:@"test"]];
badguy.texture.filteringMode = SKTextureFilteringNearest;
badguy.physicsBody.angularVelocity = 0;
badguy.physicsBody.allowsRotation = NO;
badguy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(32, 32)];    
badguy.physicsBody.velocity = CGVectorMake(0, 0);
badguy.physicsBody.categoryBitMask = CollisionTypeEnemy;
badguy.physicsBody.contactTestBitMask = CollisionTypePlayer | CollisionTypeWall | CollisionTypeEnemy;
badguy.physicsBody.collisionBitMask = CollisionTypeWall | CollisionTypePlayer | CollisionTypeEnemy;
badguy.physicsBody.mass = 10000;
badguy.physicsBody.restitution = 0;
badguy.physicsBody.dynamic = YES;
badguy.zPosition = 10;

在更新时我调用此方法:

-(void)enemiesFollow
{

    [self.world enumerateChildNodesWithName:@"badGuy" usingBlock:^(SKNode * _Nonnull badGuyNode, BOOL * _Nonnull stop) {
        if((SDistanceBetweenPoints(self.player.position, badGuyNode.position) < 100)&&
           (SDistanceBetweenPoints(self.player.position, badGuyNode.position) > 32))
        { 
            SKAction * actionMove = [SKAction moveTo:self.player.position duration:2.0];
            [badGuyNode runAction:actionMove];  
        }else{
            [badGuyNode removeAllActions];
        }

    }];

}

1 个答案:

答案 0 :(得分:6)

感谢Skyler Lauren's建议,我非常确定问题出在以下几行:

SKSpriteNode *badguy = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(32,32)];
badguy.texture.filteringMode = SKTextureFilteringNearest;
badguy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(32, 32)];
badguy.physicsBody.angularVelocity = 0;
badguy.physicsBody.allowsRotation = YES;

重点是,在创建实体之前,不能设置物理主体的属性。所以,在你创建一个物理体之后移动这些线就会很好,就像这样:

{{1}}