Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. extends Area
  2.  
  3. export(float) var speed = 30
  4. export(float) var attractRange = 10
  5. export(float) var lifeTime = 5
  6. var enemies = []
  7. var defaultTarget
  8. var moveDirection = Vector3()
  9.  
  10.  
  11. func init(direction,target):
  12. $Timer.wait_time = lifeTime
  13. $Timer.start()
  14. $AttractCollision.shape.radius = attractRange
  15.  
  16. setDirection(direction)
  17. $TopWeapon.look_at(translation - moveDirection,Vector3(0,1,0))
  18. $Top.look_at(translation - moveDirection,Vector3(0,1,0))
  19. setTarget(target)
  20.  
  21. func setDirection(direction):
  22. moveDirection = direction
  23.  
  24. func _process(delta):
  25. if $Timer.is_stopped(): return
  26. translate(moveDirection * speed * delta)
  27. searchForEnemies()
  28.  
  29. func searchForEnemies():
  30. for body in get_overlapping_bodies():
  31. var newBody = weakref(body)
  32. if !enemies.has(newBody):
  33. enemies.append(newBody)
  34. setEnemyTarget(newBody,self)
  35.  
  36. func setTarget(target):
  37. defaultTarget = target
  38.  
  39. func setEnemyTarget(enemy,newTarget):
  40. if enemy.get_ref():
  41. enemy.get_ref().setTarget(newTarget)
  42.  
  43. func explode():
  44. pass
  45.  
  46. func restoreTarget():
  47. for enemy in enemies:
  48. setEnemyTarget(enemy,defaultTarget)
  49.  
  50. func _on_Timer_timeout():
  51. restoreTarget()
  52. queue_free()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement