Следуйте за THIS учебным пособием шаг за шагом, и вы можете это достичь.
Рассмотрим следующий код:
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
let location = touches.anyObject()!.locationInNode(scene)
if let pig = movingPig {
pig.addMovingPoint(location)
}
}
Это простой метод. Вы получаете следующую позицию пальца пользователя, и если вы нашли свиньи в touchesBegan(_:,withEvent:)
, как указано значением non-nil movingPig, вы добавляете положение этой свиньи в качестве следующей путевой точки.
До сих пор вы можете сохранить путь для свиньи - теперь давайте сделаем свинью по этому пути. Добавьте следующий код update()
внутри GameScene.swift
:
dt = currentTime - lastUpdateTime
lastUpdateTime = currentTime
enumerateChildNodesWithName("pig", usingBlock: {node, stop in
let pig = node as Pig
pig.move(self.dt)
})
И вы можете видеть результат:
Рисование линий:
На данный момент, только свинья знает путь он хочет путешествовать, но сцена также должна знать этот путь, чтобы нарисовать его. Решение этой проблемы - новый метод для вашего класса Pig
.
func createPathToMove() -> CGPathRef? {
//1
if wayPoints.count <= 1 {
return nil
}
//2
var ref = CGPathCreateMutable()
//3
for var i = 0; i < wayPoints.count; ++i {
let p = wayPoints[i]
//4
if i == 0 {
CGPathMoveToPoint(ref, nil, p.x, p.y)
} else {
CGPathAddLineToPoint(ref, nil, p.x, p.y)
}
}
return ref
}
этот метод, чтобы сделать путь свиньи:
func drawLines() {
//1
enumerateChildNodesWithName("line", usingBlock: {node, stop in
node.removeFromParent()
})
//2
enumerateChildNodesWithName("pig", usingBlock: {node, stop in
//3
let pig = node as Pig
if let path = pig.createPathToMove() {
let shapeNode = SKShapeNode()
shapeNode.path = path
shapeNode.name = "line"
shapeNode.strokeColor = UIColor.grayColor()
shapeNode.lineWidth = 2
shapeNode.zPosition = 1
self.addChild(shapeNode)
}
})
}
И вот ваш результат:
И вы можете установить этот путь для свиньи.
Вы можете изменить это в соответствии с вашими потребностями.
Надеюсь, это поможет.
[Использование touchesMoved нарисовать линию] [1] [1]: http://stackoverflow.com/a/26045711/2775981 – Vicky
@Vicky, что учебник , по внешнему виду, написанному в Objective-C. Я понятия не имею, как писать в Objective-C и не могу понять это просто путем чтения. – rookr