Objective c 如何阻止精灵离开屏幕

Objective c 如何阻止精灵离开屏幕,objective-c,sprite-kit,Objective C,Sprite Kit,我正在使用加速计在屏幕上移动精灵,但我不想离开屏幕 我试着用这个 self.physicsWorld.contactDelegate = self; self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; self.physicsBody.categoryBitMask = edgeCategory; sprite.physicsBody.collisionBitMask

我正在使用加速计在屏幕上移动精灵,但我不想离开屏幕

我试着用这个

self.physicsWorld.contactDelegate = self;
        self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
        self.physicsBody.categoryBitMask = edgeCategory;


sprite.physicsBody.collisionBitMask = edgeCategory;
但是精灵还是离开了屏幕

我还更改了场景锚点

self.anchorPoint = CGPointMake(0.5, 0.5);

尝试创建4个矩形SpriteNodes,并使它们成为构成边框的非常细的长线。给他们所有相同的CategoryBitMask等

这样,可以使用self.size.width作为长度,使用大约1或2作为厚度来设置屋顶和地板。两边相反

这将忽略场景physicsBody矩形未居中于屏幕中间的问题

如果您以前没有这样做,请使用您的方法:

设置sprite.categorybitmask=spriteCategory; 设置self.collisionBitMask=spriteCategory


其中一个节点必须是动态的!为了使碰撞生效。

没有发生任何情况,但我注意到边界是生成的,而不是在屏幕周围,可能是因为我更改了场景的定位点,但是如何使用该定位点设置边界启用ShowPhysics并检查边界的创建位置启用ShowPhysics但精灵不接触边界。可能是因为精灵是另一个sknode的子对象-第一次加载时又多了一张图片。精灵是在中间因为Self.CaloPosik= CGPoxToMa0.5,0.5;但是精灵的身体不是,我相信你必须在两个身体上都设置位问,我已经建议过了。我认为他没有设置sprites categoryBitMask。我建议你发布创建sprite的代码。@0x141E这是一个屏幕截图,这是创建新sprite的代码SKSpriteNode*sprite=[SKSpriteNode spriteNodeWithColor:[UIColor redColor]size:cSizeMake90,90];sprite.physicsBody=[SKPhysicsBody和矩形大小:CGSizeMake90,90];sprite.physicsBody.dynamic=否;[self addChild:sprite];如果移除self.anchorPoint=CGPointMake0.5,0.5,则精灵的physicsBody未正确定位;没有位置匹配