Advertisement
PlanetKiller

Godot AStar Base Nav AI

Mar 1st, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1.  
  2. extends KinematicBody
  3.  
  4. # class member variables go here, for example:
  5. # var a = 2
  6. # var b = "textvar"
  7. var target = null
  8. var targetNode
  9. var as
  10. var path = null
  11.  
  12. var tarPoint
  13. var ownPoint
  14.  
  15. func startup():
  16.     targetNode = get_tree().get_nodes_in_group("Player")[0]
  17.     as = MinorData.get_star()
  18.  
  19.     pass
  20.  
  21. func nav_to():
  22.    
  23.     tarPoint = as.get_closest_point(targetNode.get_translation())
  24.     ownPoint = as.get_closest_point(get_translation())
  25.     # get path
  26.     if(ownPoint > -1):
  27.         path = as.get_point_path(ownPoint, tarPoint)
  28.         if(path.size() > 1):
  29.             target = path[1]
  30.            
  31.        
  32.     move_out()
  33.     pass
  34.  
  35. func move_out():
  36.     if(target != null):
  37.         #get distance from target
  38.         var pos = get_global_transform().origin
  39.         var eyePoint = Vector3(target[0], pos[1],target[2])
  40.         var dist = get_translation().distance_to(eyePoint)
  41.            
  42.         if(dist > 1):
  43.             look_at(eyePoint, Vector3(0,1,0))
  44.             set_transform(get_transform().translated(Vector3(0,0,-1)))
  45.  
  46.         if(not is_on_floor()):
  47.             move_and_slide(Vector3(0,-1,0))
  48.  
  49.     pass
  50.  
  51. func _process(delta):
  52.  
  53.     nav_to()
  54.  
  55.     pass
  56.  
  57. func _ready():
  58.     startup()
  59.     nav_to()
  60.     set_process(true)
  61.     # Called every time the node is added to the scene.
  62.     # Initialization here
  63.     pass
  64.  
  65. #func _process(delta):
  66. #   # Called every frame. Delta is time since last frame.
  67. #   # Update game logic here.
  68. #   pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement