2016-10-14 107 views
1

我沿着屏幕有幾個方形節點(如地磚),我想限制我的播放器(P)節點在其內移動這些節點。如何防止節點脫離另一個節點(外部)

--------------------------------- 
| | P | | | | | | | <- Want no movement allowed 
---------------------------------  outside of these squares. 
      | | 
     ------------- 
     | | | | ... 
     ------------- 

我不知道是否有一個優雅的方式與SpriteKit物理,不涉及把無形的塊周圍的地面所有的方式做到這一點。

謝謝!

回答

2

SKConstraint對象描述了一個節點位置或方向的數學約束。

您可以使用SKConstraint保持節點在水平軸上的特定點有一定距離:

let center = size.width/2.0, difference = CGFloat(170.0) 
let leftConstraint = SKConstraint.positionX(SKRange(constantValue: center - difference)) 
let rightConstraint = SKConstraint.positionX(SKRange(constantValue: center + difference))  
player.constraints = [leftConstraint, rightConstraint] 

您也可以決定啓用或在遊戲過程中禁用某些約束:

leftConstraint.enabled = false 
1

您使用基於邊緣的物理實體,而不是基於體積的物理實體。因此,在您構建物理體時,請在構造函數中查找與edge有關的任何內容。現在,如果您想要在瓷磚之間行走,則必須爲地板的外牆創建1個物理機構,因爲用瓷磚做瓷磚意味着您將卡在各個瓷磚中。

相關問題