Swift SpriteKit为用户绘制的线添加物理效果

时间:2019-06-18 02:18:07

标签: swift xcode sprite-kit skphysicsbody

我想创建一个游戏,玩家在游戏中画出一条物理线,类似于游戏《快乐玻璃》。

我尝试过的事情:

 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方法无法识别足够的触摸,因此它看起来像这样。

enter image description here

有没有一种方法可以更频繁地识别触摸,这样我就可以用CGPath填满整行或某种方式来做到这一点?基本上,我只是不能在这些点之间有这些差距,因为我不能让其他节点的PhysicBodies落在裂缝之间。

另一件事是,这些点通过SKAction不断地移出屏幕,因此我只能从当前触摸到最后触摸绘制CGPath线,因为从最后触摸开始的点会稍微移动,所以我有点困惑,怎么办,任何建议都会有所帮助。

谢谢

0 个答案:

没有答案