将SKSpriteNode的运动约束到场景中的固定区域

时间:2013-12-13 15:49:52

标签: sprite-kit

如何限制SKSpriteNode手动移动到场景中的固定矩形区域?这个固定的矩形区域也是一个固定在场景中的SKSpriteNode。换句话说,我想将对象的手动移动(SKSpriteNode)限制为完全包含在另一个SKSpriteNode中,或者至少在它占据的相同空间中。我尝试了几种不同的方法(例如使用具有基于边缘的物理体的SKShapeNode),但似乎没有任何效果。这看起来应该是一个相当简单的任务。感谢您提供的任何帮助或提示。

2 个答案:

答案 0 :(得分:1)

在移动代码周围加上一个if语句 - 所以如果它将物体带过你的边界,就不要进行移动。 e.g。

//check that a positive movement won't take your node past the right boundary
if(node.position.x + yourXMovementValue < boundaryXRight){
    //move your node
}

//same for y

答案 1 :(得分:0)

    let rangeX = SKRange(lowerLimit: CGFloat, upperLimit: CGFloat)
    let contraintX = SKConstraint.positionX(rangeX)
    let rangeY = SKRange(lowerLimit: CGFloat, upperLimit: CGFloat)
    let contraintY = SKConstraint.positionY(rangeY)
    yourObject.constraints = [contraintX, contraintY]