gpt4 book ai didi

快速正确的语法 if else while etc

转载 作者:行者123 更新时间:2023-11-28 10:46:51 26 4
gpt4 key购买 nike

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

if backgroundRect.contains(paddleRect){
let paddleX = paddle.position.x + (touchLocation.x - previousLocation.x)
let paddleY = paddle.position.y + (touchLocation.y - previousLocation.y)
paddle.position = CGPoint(x: paddleX, y: paddleY)
} else {
print ("paddleRect not contained by backgroundRect")
}

目前我可以在背景中四处拖动桨。当我拖动桨并且它碰到背景的边缘时,它不再包含在背景中并停止,所以我不能再移动它了。

我希望能够在背景矩形内移动它,但不停止响应边缘的拖动。我知道“if else”不是执行此操作的正确方法,但我想知道我如何编写它以便桨在背景矩形的范围内不断移动。

它是一个“while continue”循环吗?还是别的?

最佳答案

问题是,一旦退出矩形,您就无法更改桨的位置。因此,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")
}

关于快速正确的语法 if else while etc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com