【问题标题】:Stop node rotation in Sprite Kit在 Sprite Kit 中停止节点旋转
【发布时间】:2015-10-26 19:33:27
【问题描述】:

我不知道如何阻止节点旋转。 为什么allowRotation 没有禁用它?
以下是我描述我的节点的方式:

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

    }];

}

【问题讨论】:

  • 请更新您的代码,举例说明您如何移动该(旋转)节点。

标签: sprite-kit


【解决方案1】:

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

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

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多