First godot-ci commit
This commit is contained in:
48
scripts/Cannon.gd
Normal file
48
scripts/Cannon.gd
Normal file
@@ -0,0 +1,48 @@
|
||||
extends "res://scripts/ColoredEntity.gd"
|
||||
|
||||
@onready var Bullet: PackedScene = preload("res://scenes/Projectile.tscn")
|
||||
const RATE_OF_CHANGE: float = 0.9
|
||||
const UPPER_LIMIT: int = -89
|
||||
const LOWER_LIMIT: int = -5
|
||||
|
||||
var angle: float = -45.0
|
||||
|
||||
func _ready():
|
||||
self.highlight()
|
||||
|
||||
func _process(delta):
|
||||
$Sprite2D.set_rotation(deg_to_rad(self.angle))
|
||||
$Sprite2D.size.y = 24
|
||||
|
||||
func _input(event):
|
||||
if Input.is_action_pressed("ui_up"):
|
||||
if self.angle > UPPER_LIMIT:
|
||||
self.move_up()
|
||||
if Input.is_action_pressed("ui_down"):
|
||||
if self.angle < LOWER_LIMIT:
|
||||
self.move_down()
|
||||
|
||||
func move_up() -> void:
|
||||
self.angle -= RATE_OF_CHANGE
|
||||
|
||||
func move_down() -> void:
|
||||
self.angle += RATE_OF_CHANGE
|
||||
|
||||
func shoot() -> void:
|
||||
if $FireCooldown.time_left == 0:
|
||||
var NewBullet = Bullet.instantiate()
|
||||
NewBullet.global_position = $Sprite2D/CannonTip.global_position
|
||||
NewBullet.rotation_degrees = self.angle
|
||||
var at: Vector2 = $Sprite2D/CannonTip.global_position - $Sprite2D/CannonBase.global_position
|
||||
NewBullet.shoot(at)
|
||||
|
||||
var BulletSprite = NewBullet.get_node("Mask")
|
||||
if self.highlighted:
|
||||
BulletSprite.highlight()
|
||||
else:
|
||||
BulletSprite.lowlight()
|
||||
|
||||
NewBullet.setup(GLOBAL.SpriteType.BULLET, GLOBAL.BULLET_SPEED)
|
||||
NewBullet.update_collision_layer()
|
||||
$Projectiles.add_child(NewBullet)
|
||||
$FireCooldown.start()
|
||||
Reference in New Issue
Block a user