diff --git a/graphics/muzzle_flash.png b/graphics/muzzle_flash.png new file mode 100644 index 0000000..f02f0bd Binary files /dev/null and b/graphics/muzzle_flash.png differ diff --git a/graphics/muzzle_flash.png.import b/graphics/muzzle_flash.png.import new file mode 100644 index 0000000..d8bf0de --- /dev/null +++ b/graphics/muzzle_flash.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crmbupr3qg0j" +path="res://.godot/imported/muzzle_flash.png-a4acd317005dff07444b3286deac56f4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/muzzle_flash.png" +dest_files=["res://.godot/imported/muzzle_flash.png-a4acd317005dff07444b3286deac56f4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/shot_stock.tres b/resources/shot_stock.tres index a3817e7..a485b71 100644 --- a/resources/shot_stock.tres +++ b/resources/shot_stock.tres @@ -6,6 +6,6 @@ [resource] script = ExtResource("1_dpne1") shot_name = "Stock" -speed = -300 +speed = -350 cooldown = 0.0 metadata/_custom_type_script = "uid://ccdohs4gduee5" diff --git a/scenes/player.tscn b/scenes/player.tscn index 80abd56..177e4e7 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -3,18 +3,108 @@ [ext_resource type="Script" uid="uid://otm88638j7f8" path="res://scripts/player.gd" id="1_g2els"] [ext_resource type="PackedScene" uid="uid://ddpclu2vdy2ve" path="res://scenes/stock_weapon.tscn" id="2_dqkch"] [ext_resource type="Texture2D" uid="uid://cq4we1m1yv22s" path="res://graphics/ship.png" id="2_qhqgy"] +[ext_resource type="Texture2D" uid="uid://crmbupr3qg0j" path="res://graphics/muzzle_flash.png" id="4_dqkch"] +[ext_resource type="Texture2D" uid="uid://b0iavxi8vaxtj" path="res://graphics/ship_thrusters.png" id="5_qlg0r"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_tuyoq"] +atlas = ExtResource("5_qlg0r") +region = Rect2(28, 0, 14, 6) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fjrip"] +atlas = ExtResource("5_qlg0r") +region = Rect2(42, 0, 14, 6) + +[sub_resource type="AtlasTexture" id="AtlasTexture_smehm"] +atlas = ExtResource("5_qlg0r") +region = Rect2(1, 0, 14, 6) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ur7pv"] +atlas = ExtResource("5_qlg0r") +region = Rect2(15, 0, 14, 6) + +[sub_resource type="SpriteFrames" id="SpriteFrames_y4r1p"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_tuyoq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fjrip") +}], +"loop": true, +"name": &"banked", +"speed": 15.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_smehm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ur7pv") +}], +"loop": true, +"name": &"fwd", +"speed": 15.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_qlg0r"] +atlas = ExtResource("4_dqkch") +region = Rect2(0, 0, 15, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y4r1p"] +atlas = ExtResource("4_dqkch") +region = Rect2(15, 0, 15, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d2wvv"] +atlas = ExtResource("4_dqkch") +region = Rect2(30, 0, 15, 8) + +[sub_resource type="SpriteFrames" id="SpriteFrames_3v2ag"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_qlg0r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_y4r1p") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d2wvv") +}], +"loop": true, +"name": &"stock", +"speed": 15.0 +}] [sub_resource type="RectangleShape2D" id="RectangleShape2D_dqkch"] +size = Vector2(10, 11) [node name="Player" type="Area2D" unique_id=652131079] script = ExtResource("1_g2els") +speed = 165 weapon_current = ExtResource("2_dqkch") [node name="Ship" type="Sprite2D" parent="." unique_id=1155866924] unique_name_in_owner = true texture = ExtResource("2_qhqgy") +hframes = 3 +region_rect = Rect2(0, 0, 62, 24.370766) + +[node name="Thrusters" type="AnimatedSprite2D" parent="Ship" unique_id=2096876587] +position = Vector2(0, 15) +sprite_frames = SubResource("SpriteFrames_y4r1p") +animation = &"fwd" +autoplay = "fwd" + +[node name="MuzzleFlash" type="AnimatedSprite2D" parent="Ship" unique_id=1584132038] +unique_name_in_owner = true +position = Vector2(0, -16) +sprite_frames = SubResource("SpriteFrames_3v2ag") +animation = &"stock" +autoplay = "stock" [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=485826453] +position = Vector2(0, -3.5) shape = SubResource("RectangleShape2D_dqkch") [node name="WeaponCooldown" type="Timer" parent="." unique_id=269678170] diff --git a/scripts/player.gd b/scripts/player.gd index 4262e3b..669b58e 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -3,7 +3,8 @@ extends Area2D @export var speed: int = 150 @export var shield_max: int = 10 -var velocity: Vector2 = Vector2.ZERO +#var ship = %Ship + var shield: int = 0: set = shield_set var can_shoot: bool = true var is_shooting: bool = false @@ -27,55 +28,42 @@ func _process(delta): ship_displacement = position.y - previous_position.y travel += bullet_speed * delta + (ship_displacement) travel = clamp(travel, 0, 1.9 * weapon_spacing) - #TODO: sprite frame change on x axis - #if input.x > 0: - #$Ship.frame = 2 - #$Ship/Boosters.animation = "right" - #elif input.x < 0: - #$Ship.frame = 0 - #$Ship/Boosters.animation = "left" - #else: - #$Ship.frame = 1 - #$Ship/Boosters.animation = "forward" + + # Sprite feedback based one player input + if input.x > 0: + %Ship.frame = 2 + %Ship/Thrusters.flip_h = true + %Ship/Thrusters.animation = "banked" + elif input.x < 0: + %Ship.frame = 1 + %Ship/Thrusters.flip_h = false + %Ship/Thrusters.animation = "banked" + else: + %Ship.frame = 0 + %Ship/Thrusters.flip_h = false + %Ship/Thrusters.animation = "fwd" previous_position = position position += input * speed * delta position = position.clamp(Vector2(12,12), screensize - Vector2(12,12)) - # Update velocity based on input - #var direction = Vector2.ZERO - #if Input.is_action_pressed("down"): - #direction.y += 1 - #if Input.is_action_pressed("up"): - #direction.y -= 1 -# - ## Normalize direction and apply speed - #if direction.length() > 0: - #velocity = direction.normalized() * speed - - # Update velocity - #velocity += velocity * delta - velocity = input * speed - if Input.is_action_pressed("shoot"): - print("Spacebar pressed!") is_shooting = true else: is_shooting = false if is_shooting == true: + print("Spacebar pressed!") + %MuzzleFlash.show() + %Ship/MuzzleFlash.animation = "stock" + if travel > weapon_spacing: shoot() travel -= weapon_spacing - - #weapon_timer += delta - #print(weapon_timer) - #if weapon_timer >= weapon_rate: - #shoot() - #weapon_timer = 0.0 - - if is_shooting == false: return + + if is_shooting == false: + %MuzzleFlash.hide() func shield_set(_value: int): return @@ -88,16 +76,13 @@ func _on_weapon_cooldown_timeout() -> void: func shoot(): + # Instantiate the bullet var bullet = weapon_current.instantiate() - bullet.position = position + Vector2(0,-20) - #previous_position = position get_tree().root.add_child(bullet) + bullet.position = position + Vector2(0,-23) weapon_rate = bullet.shot_data.rate weapon_spacing = bullet.shot_data.spacing bullet_speed = abs(bullet.shot_data.speed) - #bullet.global_transform = self.global_transform prints(bullet.shot_data.shot_name, "weapon fired") #Print which weapon is firing - #weapon_cooldown = $WeaponCooldown - #weapon_cooldown.wait_time = bullet.shot_data.cooldown - #weapon_cooldown.start() - #can_shoot = not can_shoot + + diff --git a/scripts/player_shot.gd b/scripts/player_shot.gd index 98bf23d..54418e6 100644 --- a/scripts/player_shot.gd +++ b/scripts/player_shot.gd @@ -3,8 +3,8 @@ extends Resource @export var shot_name: String @export var damage: int = 1 -@export var speed: int = 100 +@export var speed: int = 135 @export var rate: float = 0.1 @export var cooldown: float = 0.25 @export var sprite: Texture2D = preload("res://graphics/shot.png") -@export var spacing: float = 50 +@export var spacing: float = 35