如何防止节点移出另一个节点(外部)

时间:2016-10-14 01:46:51

标签: swift sprite-kit skphysicsbody sknode

我有一些方形的节点(如地砖)沿着屏幕移动,我想限制我的播放器(P)节点在这些节点内移动。

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

我想知道使用SpriteKit Physics是否有一种优雅的方式来做到这一点,这并不意味着将隐形块一直放在地板上。

谢谢!

2 个答案:

答案 0 :(得分:3)

<iframe src="http://docs.google.com/gview?url=http://example.com/mypdf.pdf&embedded=true" style="width:718px; height:700px;" frameborder="0"></iframe> 对象描述了节点位置或方向的数学约束。

您可以使用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]

答案 1 :(得分:1)

您使用基于边缘的物理实体,而不是基于体积的物理实体。因此,在构建物理主体时,在构造函数中查找edge的任何内容。现在,如果你想能够在瓷砖之间走动,你将需要为地板的外墙创建一个物理主体,因为按瓷砖进行平铺将意味着你将被困在单独的瓷砖中。