【发布时间】:2014-03-01 19:41:14
【问题描述】:
这是我的代码:
// setting background
_ground = [[SKSpriteNode alloc]
initWithColor:[SKColor greenColor]
size:CGSizeMake([Helpers landscapeScreenSize].width, 50)];
_ground.name = @"ground";
_ground.zPosition = 1;
_ground.anchorPoint = CGPointMake(0, 0);
_ground.position = CGPointMake(0, 0);
_ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake([Helpers landscapeScreenSize].width, 50)];
_ground.physicsBody.dynamic = NO;
_ground.physicsBody.affectedByGravity = NO;
_ground.physicsBody.categoryBitMask = groundCategory;
_ground.physicsBody.collisionBitMask = elementCategory;
_ground.physicsBody.contactTestBitMask = elementCategory;
绿色矩形定位正常,但 SKPhysicsBody 未正确表示此矩形。看起来 SKPhysicsBody 没有根据精灵位置和锚点“移动”它的身体。 SKPhysicsBody 向左移动了 _ground.width 个点。
我做错了什么?
附言。 改成这个(代码)解决了我的问题,但我真的不喜欢这个解决方案,它似乎是一种丑陋的定位元素的方式。
_ground.position = CGPointMake([Helpers landscapeScreenSize].width / 2, 0);
+删除:
_ground.position = CGPointMake(0, 0);
【问题讨论】:
-
有趣,这在 iOS 8 中不是问题。
标签: objective-c sprite-kit skspritenode