Я хочу создать игру, в которой игрок рисует линию с физикой, похожую на игру Happy Glass.
Что я пробовал:
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? Я просто не могу иметь эти промежутки между этими точками в основном потому, что у меня не может быть других узлов с физическими телами, падающими между трещинами.
Другое дело, что точки постоянно перемещаются за пределы экрана с помощью SKAction, поэтому я могу просто нарисовать линию CGPath от текущего касания до последнего касания, потому что точка от последнего касания будет слегка перемещена, поэтому я ' Я не совсем понимаю, что делать, и любые предложения будут полезны.
Спасибо