我是SpriteKit的新手,尝试构建基本的Breakout游戏。我面临的问题是我无法限制屏幕内的拨片(这是另一个具有蓝色纹理的节点,如图所示)。当我移动球拍时,它超出了屏幕限制。 我已经将物理应用于屏幕区域和划桨,但没有运气。
答案 0 :(得分:1)
您的球拍不会与边缘发生碰撞,因为您是通过直接更改其位置来移动它。要参与物理模拟,必须通过设置其速度或通过向物理主体施加力或脉冲来移动桨。例如,
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
if (location.x < size.width/2.0) {
paddle.physicsBody?.applyImpulse(CGVectorMake(-scale, 0))
}
else {
paddle.physicsBody?.applyImpulse(CGVectorMake(scale, 0))
}
}
其中scale
确定x
维度中应用于正文的动量。
修改强>
或者,您可以通过
将球拍的x
位置限制在设定范围内
let range = SKRange(lowerLimit: CGRectGetMinX(view.frame), upperLimit: CGRectGetMaxX(view.frame))
let constraint = SKConstraint.positionX(range)
paddle.constraints = [constraint]
将上述内容添加到didMoveToView
方法。