sprite-kit - 在 Sprite Kit 中停止节点旋转

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

    }];

}

最佳答案

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

关键是您不能在创建实际 body 之前设置物理 body 的属性。所以,在你创建一个物理体之后移动这些线,你会很好,像这样:
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;

关于sprite-kit - 在 Sprite Kit 中停止节点旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354094/

相关文章:

swift - 检测节点是否触摸帧的最佳方法

ios - SpriteKit 表现出较大的 CPU 开销

ios - 将 NSNotificationCenter 与 SkScene 一起使用到 UIViewController

ios - 如何在 SpriteKit 中只激活物理体的一侧?

swift - SKPhysicsJointFixed 在移动节点时不会将节点保持在一起

sprite-kit - 背景没有填满整个 View SpriteKit

ios - 在 Sprite Kit 中拖动一个对象与另一个对象碰撞时不会发生弹跳

ios - SpriteKit 中使用模糊和阈值的水效果

Swift:SKEmitterNode 受 PhysicsWorld 重力影响?

ios - 从 SKscene (SpriteKit) 呈现 UIViewController