我想创建一个游戏,玩家在游戏中画出一条物理线,类似于游戏《快乐玻璃》。
我尝试过的事情:
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
touchPosition = location
}
}
func draw(pos: CGPoint){
let node = SKSpriteNode(imageNamed: "circle")
node.position = CGPoint(x: pos.x, y: pos.y)
node.size = CGSize(width: 10, height: 10)
node.physicsBody = SKPhysicsBody(circleOfRadius: node.frame.width / 2)
//set up the physics
self.addChild(node)
}
override func didSimulatePhysics() {
if touching{
draw(pos: touchPosition)
}
}
因此,我基本上每次触摸移动时都会更改touchPosition变量(当用户在屏幕上拖动手指时),然后我将didSimulatePhysics用作重复计时器,以在touchPosition上添加小圆圈,并在上面加上了物理学。
问题:
一切正常。唯一的问题是它们过于分散。我希望它是一条连续的线,但是touchesMoved方法无法识别足够的触摸,因此它看起来像这样。
有没有一种方法可以更频繁地识别触摸,这样我就可以用CGPath填满整行或某种方式来做到这一点?基本上,我只是不能在这些点之间有这些差距,因为我不能让其他节点的PhysicBodies落在裂缝之间。
另一件事是,这些点通过SKAction不断地移出屏幕,因此我只能从当前触摸到最后触摸绘制CGPath线,因为从最后触摸开始的点会稍微移动,所以我有点困惑,怎么办,任何建议都会有所帮助。
谢谢