2014-07-09 47 views
2

我更改了我的SKSpriteNode的錨點,但似乎SKPhysicalBody不正確。Sprite套件 - 更改SKShapeNode的錨點不會改變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向我表明的身體仍然不正確。

左側是物理體在屏幕中間看到的箱.... 物理學身體向左側斜下來。

+0

您可以添加屏幕截圖嗎? –

+0

在設置ground.position之前設置你的錨點 – meisenman

+0

@ 0x7fffffff已添加屏幕截圖 – junyi00

回答

2

anchorPoint是紋理相對於節點位置的位置。換句話說,改變錨點相對於精靈的位置而改變紋理的繪製位置。

因此,由於節點的位置不受影響,所以物理主體形狀不會受到對anchorPoint更改的影響。

注意4" 發售的iPhone陣地身體的尺寸將是426x120從屏幕的左下角延伸(假設場景的位置是0,0)。

還要注意,周圍有一個小的閾值如果您使用與圖像完全相同的尺寸,則可能會有一個小間隙,因此您可能需要使圖形稍微變小一些。