Итак, я пытался избегать построек в своей игре, недавно я узнал о GameplayKit и его использовании агентов, целей и т. Д., Которые могут пригодиться сейчас, однако это потребует большого количества изменений вмоя игра почти готоваЯ пытался использовать поиск пути, используя GamePlayKit, но, кажется, он запаздывает при поиске пути.Путь между PlayerBot и пользователем.
func IntiatePositionFollow(){
followTimer = Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.test123), userInfo: nil, repeats: true )
followTimer?.fire()
}
@objc func test123(){
let x1 = self.movetoPlayer?.position.x
let y1 = self.movetoPlayer?.position.y
let x2 = self.position.x
let y2 = self.position.y
let distance = (pow((x2-x1!),2)+pow((y2-y1!),2)).squareRoot()
if distance >= 0 {
let startNode = GKGraphNode2D(point: vector_float2(x: Float(self.position.x), y: Float(self.position.y)))
let toNode = GKGraphNode2D(point: vector_float2(x: Float((movetoPlayer?.position.x)!), y: Float((movetoPlayer?.position.y)!)))
graph.connectUsingObstacles(node: startNode)
graph.connectUsingObstacles(node: toNode)
if let nodes = graph.findPath(from: startNode, to: toNode) as? [GKGraphNode2D] {
let path = CGMutablePath()
path.move(to: self.position)
for node in nodes {
path.addLine(to: CGPoint(x: CGFloat(node.position.x), y: CGFloat(node.position.y)))
}
if self.hasActions(){
self.removeAllActions()
}
let action = SKAction.follow(path
, asOffset: false, orientToPath: true, duration: Double((distance/4) * 0.0166749312))
self.run(action, completion: {()-> Void in
})
}
}
}