检查 SKSpriteNode 何时通过某个点或线
Check when an SKSpriteNode passes a certain point or line
在我的游戏中,有一个SKSpriteNode,我们称之为"gate,",它在场景中向上移动。当门到达屏幕顶部时,它会向下移动到底部并再次开始向上移动。
玩家失败的方式是,位于场景顶部的恒定 y 位置的角色与大门发生碰撞。我有碰撞并且 'death' 都解决了,但现在我需要检查角色是否成功通过了 'through' 门(意味着门在没有撞到他的情况下移动了角色)。 基本上,我需要知道如何检查一个移动节点何时穿过某个 y 位置(在本例中,该位置是角色的 y 位置)。如果出现这种情况,我想加一分。
大致情况如下:
(click here for the rough sketch)
我试过的一件事是在更新方法中,如果门的 y 位置等于角色的 y 位置,我知道两个节点已经交叉,所以我应该增加分数。它看起来像这样:
override func update(currentTime: CFTimeInterval) {
if gate.position.y == character.position.y {
print("score")
score++
}
}
但似乎不起作用。有没有其他方法可以检查门何时穿过角色的 y 位置?
谢谢!
可能发生的情况是 y 坐标不相同。例如,如果 gate.position.y = 100
和 character. position.y = 101
,它将不起作用。试试这个:
override func update(currentTime: CFTimeInterval) {
let minY = gate.position.y - 10
let maxY = gate.position.y + 10
if character.position.y > minY && character.position.y < maxY {
print("score")
score++
}
}
您可以调整数字 10 以查看最佳效果。希望这有帮助
在我的游戏中,有一个SKSpriteNode,我们称之为"gate,",它在场景中向上移动。当门到达屏幕顶部时,它会向下移动到底部并再次开始向上移动。
玩家失败的方式是,位于场景顶部的恒定 y 位置的角色与大门发生碰撞。我有碰撞并且 'death' 都解决了,但现在我需要检查角色是否成功通过了 'through' 门(意味着门在没有撞到他的情况下移动了角色)。 基本上,我需要知道如何检查一个移动节点何时穿过某个 y 位置(在本例中,该位置是角色的 y 位置)。如果出现这种情况,我想加一分。
大致情况如下: (click here for the rough sketch)
我试过的一件事是在更新方法中,如果门的 y 位置等于角色的 y 位置,我知道两个节点已经交叉,所以我应该增加分数。它看起来像这样:
override func update(currentTime: CFTimeInterval) {
if gate.position.y == character.position.y {
print("score")
score++
}
}
但似乎不起作用。有没有其他方法可以检查门何时穿过角色的 y 位置?
谢谢!
可能发生的情况是 y 坐标不相同。例如,如果 gate.position.y = 100
和 character. position.y = 101
,它将不起作用。试试这个:
override func update(currentTime: CFTimeInterval) {
let minY = gate.position.y - 10
let maxY = gate.position.y + 10
if character.position.y > minY && character.position.y < maxY {
print("score")
score++
}
}
您可以调整数字 10 以查看最佳效果。希望这有帮助