Làm theo từng bước THIS và bạn có thể đạt được điều đó.
Hãy xem xét các đoạn mã sau:
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
let location = touches.anyObject()!.locationInNode(scene)
if let pig = movingPig {
pig.addMovingPoint(location)
}
}
Đây là một phương pháp đơn giản. Bạn nhận được vị trí tiếp theo của ngón tay của người dùng và nếu bạn tìm thấy một con lợn trong touchesBegan(_:,withEvent:)
, như được chỉ ra bởi giá trị di chuyển không phải là nil, bạn thêm vị trí này vào con lợn làm điểm tiếp theo.
Cho đến nay, bạn có thể lưu trữ đường dẫn cho lợn — giờ hãy để con lợn đi theo con đường này. Thêm mã sau đây để update()
bên GameScene.swift
:
dt = currentTime - lastUpdateTime
lastUpdateTime = currentTime
enumerateChildNodesWithName("pig", usingBlock: {node, stop in
let pig = node as Pig
pig.move(self.dt)
})
Và bạn có thể xem kết quả:
Vẽ Đường thẳng:
Tại thời điểm này, chỉ có lợn biết con đường nó muốn đi du lịch, nhưng khung cảnh cũng cần phải biết con đường này để vẽ nó. Giải pháp cho vấn đề này là một phương pháp mới cho lớp học Pig
của bạn.
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
}
phương pháp này để vẽ đường đi của lợn:
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)
}
})
}
Và đây là kết quả của bạn:
Và bạn có thể thiết lập rằng con đường cho lợn.
Bạn có thể sửa đổi điều đó theo nhu cầu của mình.
Hy vọng điều đó sẽ hữu ích.
[Sử dụng touchesMoved để vẽ đường] [1] [1]: http://stackoverflow.com/a/26045711/2775981 – Vicky
@Vicky, hướng dẫn Đó là , từ ngoại hình của nó, được viết trong Mục tiêu-C. Tôi không biết cách viết trong Objective-C và không thể hiểu nó đơn giản bằng cách đọc. – rookr