如果是等等,则快速正确的语法

时间:2018-01-09 21:27:14

标签: swift syntax sprite-kit

我有一个SKSpritenode,它可以在一个边界内围绕屏幕拖动。 我有一个在边界内的测试。

TextView

此刻我可以在背景中拖动球拍。当我拖动桨并且它碰到背景的边缘时,它不会包含在背景中并停止,所以我不能再移动它了。

我希望能够在背景矩形内移动它,但不会停止响应边缘的拖动。我知道“if else”不是这样做的正确方法,但我想知道我是如何写它的,因此桨在背景矩形的范围内保持移动。

这是一个“while continue”循环吗?或其他什么?

1 个答案:

答案 0 :(得分:3)

问题是,一旦退出矩形,就会失去改变球拍位置的能力。因此,backgroundRect.contains(paddleRect)的每次后续检查都将永久返回false

你应该做的是总是计算潜在的位置,并使用它,或丢弃它:

let potentialPosition = CGPoint(
    x: paddle.position.x + (touchLocation.x - previousLocation.x),
    y: paddle.position.y + (touchLocation.y - previousLocation.y)
)

// This line is approximated, I don't know the exact relation between
// `paddleRect` and `paddle`, but you get the idea
if backgroundRect.contains(potentialPosition) {
    paddle.position = potentialPosition
} else {
    print ("paddleRect not contained by backgroundRect")
}