Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Area
- export(float) var speed = 30
- export(float) var attractRange = 10
- export(float) var lifeTime = 5
- var enemies = []
- var defaultTarget
- var moveDirection = Vector3()
- func init(direction,target):
- $Timer.wait_time = lifeTime
- $Timer.start()
- $AttractCollision.shape.radius = attractRange
- setDirection(direction)
- $TopWeapon.look_at(translation - moveDirection,Vector3(0,1,0))
- $Top.look_at(translation - moveDirection,Vector3(0,1,0))
- setTarget(target)
- func setDirection(direction):
- moveDirection = direction
- func _process(delta):
- if $Timer.is_stopped(): return
- translate(moveDirection * speed * delta)
- searchForEnemies()
- func searchForEnemies():
- for body in get_overlapping_bodies():
- var newBody = weakref(body)
- if !enemies.has(newBody):
- enemies.append(newBody)
- setEnemyTarget(newBody,self)
- func setTarget(target):
- defaultTarget = target
- func setEnemyTarget(enemy,newTarget):
- if enemy.get_ref():
- enemy.get_ref().setTarget(newTarget)
- func explode():
- pass
- func restoreTarget():
- for enemy in enemies:
- setEnemyTarget(enemy,defaultTarget)
- func _on_Timer_timeout():
- restoreTarget()
- queue_free()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement