123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- extends Node2D
- signal get_firing
- enum State {
- READY,
- FIRING,
- WAITING,
- }
- const BULLET_SPEED = 200.0
- var _ballScene = preload("res://scenes/Ball.tscn")
- var nbAmmo = 5
- onready var target = $Target
- onready var source = $Source
- onready var shootDelay = $ShootDelay
- onready var current_state = State.READY
- func _input(event):
- if event is InputEventMouseButton and event.is_pressed() :
- trigger(event.position)
- func trigger(aim:Vector2):
- if (current_state == State.READY):
- current_state = State.FIRING
- target.position = aim
- emit_signal("get_firing")
- func shoot():
- var bullet = _ballScene.instance()
- bullet.position = source.position
- bullet.linear_velocity = (target.position - source.position).normalized()
- bullet.linear_velocity *= BULLET_SPEED
- add_child(bullet)
- func _on_ShootDelay_timeout():
- shoot()
- nbAmmo -= 1
- if (nbAmmo == 0):
- current_state = State.WAITING
- else:
- emit_signal("get_firing")
- func _on_Launcher_get_firing():
- shootDelay.start()
|