【发布时间】:2014-07-09 12:41:25
【问题描述】:
我更改了我的 SKSpriteNode 的锚点,但似乎 SKPhysicalBody 不正确。
如果不设置我的精灵的锚点,它会出现在屏幕之外一点,使用锚点解决了这个问题。 但是设置了锚点后,实体仍然在之前的位置(改变锚点之前)
func addGround() {
let gSize = CGSizeMake(self.size.width/4*3, 120);
let ground = SKSpriteNode(color: SKColor.brownColor(), size: gSize);
ground.name = gName;
ground.anchorPoint = CGPointZero
ground.position = CGPointMake(0, 0);
ground.physicsBody = SKPhysicsBody(rectangleOfSize: ground.size);
ground.physicsBody.restitution = 0.0;
ground.physicsBody.friction = 0.0;
ground.physicsBody.angularDamping = 0.0;
ground.physicsBody.linearDamping = 0.0;
ground.physicsBody.allowsRotation = false;
ground.physicsBody.usesPreciseCollisionDetection = true; //accurate collision
ground.physicsBody.affectedByGravity = false;
ground.physicsBody.dynamic = false;
ground.physicsBody.categoryBitMask = gBitmask;
ground.physicsBody.collisionBitMask = pBitmask;
}
框绘制正确,但启用skView.showPhysics 显示身体仍然不正确。
【问题讨论】:
-
可以加个截图吗?这将有助于使正在发生的事情更加清晰。
-
在设置 ground.position 之前设置锚点
-
@0x7fffffff 已添加截图。
-
@meisenman 我注意到我在这里复制了旧版本的代码。我已经用位置之前设置的锚点更新了它
-
要制作地面,您只需设置 ground.position=CGPointMake(self.size.x/2,60);// 特定于您的地面。另外,删除锚点。
标签: ios xcode swift sprite-kit