【发布时间】:2020-12-10 12:33:18
【问题描述】:
我正在使用 Swift 开发一个国际象棋应用程序。进展顺利,但我被困在我必须检查一个棋子的移动是否被另一个棋子阻止的部分。 我试图在我的移动部件的旧位置和新位置之间创建一条 SKShapeNode 线,检查它是否与任何其他部件相交,如果是,则移动被阻止。如果我沿直线移动我的作品(如此水平或垂直),这实际上是有效的,但如果我沿对角线移动它,它不知何故不起作用。我读过关于 SKShapeNode 有点错误,但这是我能想到的唯一方法。
我猜这条线与 SpriteNodes 的框架相交,考虑到它们比棋子本身大一点,但我什至试图让棋子变得非常小,但它仍然不起作用。
希望我想做什么有点清楚。任何有关如何处理此问题的建议将不胜感激! 感谢阅读!
这是我尝试过的sn-p:
let path = CGMutablePath()
path.move(to: CGPoint(x: oldX!, y: oldY!))
path.addLine(to: CGPoint(x: newX!, y: newY!))
let shape = SKShapeNode(path: path)
scene?.addChild(shape)
for piece in allPieces {
if piece.intersects(shape) && piece != self.movableNode {
print("Move intersects other pieces")
moveAllowed = false
shape.removeFromParent()
}
}
【问题讨论】:
标签: swift sprite-kit chess cgpath skshapenode