我正在使用Sprite Kit开发iOS游戏。
我最近在我的场景中添加了一个SKSpriteNode,并没有为它创建一个物理体。然而,当我构建并运行时,当玩家的角色(确实有一个物理体)进入SKSpriteNode时,它会旋转并移开,就像它有一个物理体 - 但我没有为SKSpriteNode创建一个。
即使我输入
sprite.physicsBody = nil;
它仍然表现得像是模拟的一部分。
我想知道在制作SKSpriteNode时是否自动创建了一个物理主体,但是我查看了文档并在Google上搜索了它,并且无法找到任何暗示的情况。
非常感谢任何帮助或建议。
这是我用来创建精灵的代码(不应受模拟影响的代码)
-(void)addSprite
{
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"image"];
sprite.position = CGPointMake(40, 30);
sprite.zPosition = 30;
sprite.name = @"spriteName";
[self addChild:sprite];
}
在项目的另一部分我有
[self addSprite];
调用方法。
答案 0 :(得分:2)
是的,每个SKSpriteNode都带有一个物理体。最好改变物理体的属性,而不是完全摆脱它。如果您希望您的精灵在屏幕上而不与任何其他精灵节点交互,请执行以下操作:
sprite.physicsBody.dynamic = NO;
sprite.physicsBody.collisionBitMask = 0x0;
sprite.physicsBody.contactTestBitMask = 0x0;