2015-07-12 86 views
0

我是SpriteKit的新手,試圖構建基本的突破遊戲。我面臨的問題是我無法限制屏幕內的槳(這是另一個具有藍色紋理的節點,如圖所示)。當我移動槳時,它超出了屏幕限制。 我已經應用物理學,屏幕區域和槳,但沒有運氣。 enter image description here在SpriteKit中限制另一個節點

+0

你是如何移動槳葉的,你是如何爲背景定義物理體的? – 0x141E

+0

假設我正在通過點擊並按住左側,右側角落朝相應方向移動。我使用屬性檢查器來定義物理,通過啓用物理定義。 – Hadi

+0

您是否使用邊緣循環作爲背景?另外,你是通過施加一個力還是衝動來移動槳,還是直接改變x和y值? – 0x141E

回答

1

由於您正在通過直接更改其位置來移動它,因此您的槳不會與邊緣發生適當碰撞。要參與物理模擬,必須通過設定其速度或通過對其物理體施加力或衝量來移動槳。例如,

for touch in (touches as! Set<UITouch>) { 
    let location = touch.locationInNode(self) 
    if (location.x < size.width/2.0) { 
     paddle.physicsBody?.applyImpulse(CGVectorMake(-scale, 0)) 
    } 
    else { 
     paddle.physicsBody?.applyImpulse(CGVectorMake(scale, 0)) 
    } 
} 

其中scale確定被施加到身體在x尺寸的動量量。

編輯:

或者,也可以通過

let range = SKRange(lowerLimit: CGRectGetMinX(view.frame), upperLimit: CGRectGetMaxX(view.frame)) 
let constraint = SKConstraint.positionX(range) 
paddle.constraints = [constraint] 

約束槳的x位置是在設定範圍內以上添加到didMoveToView方法。

+0

沒有運氣。我在屏幕區域周圍添加了四個Color Sprite對象,並在其上應用了邊界矩形物理。現在我在場景中也有一個球,那個球不會離開屏幕,但槳仍然熄滅。 – Hadi

+0

您是否將槳的'collisionBitMask'設置爲0?它應該是'UInt32.max',默認值。 – 0x141E

+0

是的,但沒有運氣。 – Hadi

相關問題