2015-03-31 351 views
0

我使用這裏提供的答案SpriteKit's SKPhysicsBody with polygon helper tool爲我的精靈節點創建物理體的多邊形。CGPathMoveToPoint/CGPathAddLineToPoint方法參數令人困惑

但CGPathMoveToPoint/CGPathAddLinetoPoint方法的偏移量參數令人困惑(我無法在Apple文檔中找到引用)。

在由腳本那裏生成的代碼,OFFSETX和OFFSETY被定義爲:

CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x; 
CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y; 

雖然爲示範該處提供的GIF,它是:

CGFloat offsetX = sprite.frame.size.width/2; 
CGFloat offsetY = sprite.frame.size.height/2; 

這兩種偏移量用於修正CGPathMoveToPoint/CGPathAddLinetoPoint方法中的參數,例如:

CGPathMoveToPoint(path, NULL, 0 - offsetX, 0 - offsetY); (for the bottom left corner of the texture) 
CGPathAddLineToPoint(path, NULL, 11 - offsetX, 0 - offsetY); 
  1. 爲什麼我們需要這個偏移?

  2. 對於紋理的左下角,爲什麼我不能只提供(0,0),如:

    CGPathMoveToPoint(路徑,NULL,0,0);

  3. 當Sprite節點在屏幕上移動時,這個偏移(如果需要)會改變嗎?

  4. 如果父級場景的錨點在左上角,那麼這些方法的偏移量應該是多少?

回答

0

您所指的偏移量變量只是一個起點。您可以像固定的起始座標0,0一樣輕鬆地替換變量。

你的問題是關於一個物理體,所以錨點不適用於這種情況。物理體0,0座標始終與節點的寬度和高度相關。所以,在改變節點的錨點時,它的座標是如何居中的,它對物理體沒有任何影響。