From 6809a3733ab8aec2a0f637093bbc6fa4832cbfe2 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sun, 14 Dec 2025 16:12:19 -0600 Subject: [PATCH] can bullets have puppet strings? --- .../bullet_types/{bullet.gd => bullet_old.gd} | 2 +- .../{bullet.gd.uid => bullet_old.gd.uid} | 0 objects/bullet_types/test_bullet.gd | 2 +- objects/player/bullet.tscn | 2 +- .../bullet_emitter/player_bullet_emitter.gd | 6 +-- .../bullet_emitter/player_bullet_emitter.tscn | 2 +- scenes/test_scene_haze.tscn | 11 +++++- systems/bullets/bullet.gd | 37 +++++++++++++++++++ systems/bullets/bullet.gd.uid | 1 + 9 files changed, 55 insertions(+), 8 deletions(-) rename objects/bullet_types/{bullet.gd => bullet_old.gd} (70%) rename objects/bullet_types/{bullet.gd.uid => bullet_old.gd.uid} (100%) create mode 100644 systems/bullets/bullet.gd create mode 100644 systems/bullets/bullet.gd.uid diff --git a/objects/bullet_types/bullet.gd b/objects/bullet_types/bullet_old.gd similarity index 70% rename from objects/bullet_types/bullet.gd rename to objects/bullet_types/bullet_old.gd index 4990206..54ed814 100644 --- a/objects/bullet_types/bullet.gd +++ b/objects/bullet_types/bullet_old.gd @@ -1,4 +1,4 @@ -class_name Bullet extends Node2D +class_name BulletOld extends Node2D @export var is_player_bullet = false diff --git a/objects/bullet_types/bullet.gd.uid b/objects/bullet_types/bullet_old.gd.uid similarity index 100% rename from objects/bullet_types/bullet.gd.uid rename to objects/bullet_types/bullet_old.gd.uid diff --git a/objects/bullet_types/test_bullet.gd b/objects/bullet_types/test_bullet.gd index c8c5efe..510855b 100644 --- a/objects/bullet_types/test_bullet.gd +++ b/objects/bullet_types/test_bullet.gd @@ -1,4 +1,4 @@ -extends Bullet +extends BulletOld var speed = Vector2.ZERO var bullet_speed = 2 diff --git a/objects/player/bullet.tscn b/objects/player/bullet.tscn index a5a0678..d3c3377 100644 --- a/objects/player/bullet.tscn +++ b/objects/player/bullet.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://bgoqv662xuf1r"] -[ext_resource type="Script" uid="uid://b84vrx30l3hei" path="res://objects/player/bullet.gd" id="1_4hrp6"] +[ext_resource type="Script" path="res://objects/player/bullet.gd" id="1_4hrp6"] [ext_resource type="Texture2D" uid="uid://cm68ysi8ojc88" path="res://bullet.png" id="2_du4f6"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_du4f6"] diff --git a/objects/player/bullet_emitter/player_bullet_emitter.gd b/objects/player/bullet_emitter/player_bullet_emitter.gd index 28a18d2..c086219 100644 --- a/objects/player/bullet_emitter/player_bullet_emitter.gd +++ b/objects/player/bullet_emitter/player_bullet_emitter.gd @@ -1,6 +1,6 @@ extends Node2D -@export var Bullet: PackedScene +@export var bullet_scene: PackedScene func _input(event: InputEvent) -> void: @@ -14,10 +14,10 @@ func _input(event: InputEvent) -> void: func _on_timer_timeout() -> void: $AudioStreamPlayer.play() print("yeth") - var bullet = Bullet.instantiate() + var bullet = bullet_scene.instantiate() get_owner().get_owner().add_child(bullet) bullet.global_position = $Marker2D.global_position - var bullet2 = Bullet.instantiate() + var bullet2 = bullet_scene.instantiate() get_owner().get_owner().add_child(bullet2) bullet2.global_position = $Marker2D2.global_position diff --git a/objects/player/bullet_emitter/player_bullet_emitter.tscn b/objects/player/bullet_emitter/player_bullet_emitter.tscn index 0e8d175..3e6b7ad 100644 --- a/objects/player/bullet_emitter/player_bullet_emitter.tscn +++ b/objects/player/bullet_emitter/player_bullet_emitter.tscn @@ -6,7 +6,7 @@ [node name="PlayerBulletEmitter" type="Node2D"] script = ExtResource("1_51eej") -Bullet = ExtResource("2_xytg0") +bullet_scene = ExtResource("2_xytg0") [node name="Marker2D" type="Marker2D" parent="."] position = Vector2(-7, -5) diff --git a/scenes/test_scene_haze.tscn b/scenes/test_scene_haze.tscn index feca4d4..29c4f71 100644 --- a/scenes/test_scene_haze.tscn +++ b/scenes/test_scene_haze.tscn @@ -1,7 +1,9 @@ -[gd_scene load_steps=3 format=3 uid="uid://dxsp66qpvm65b"] +[gd_scene load_steps=5 format=3 uid="uid://dxsp66qpvm65b"] [ext_resource type="Texture2D" uid="uid://c50bfqprpitev" path="res://icon.svg" id="1_g7g4h"] [ext_resource type="PackedScene" uid="uid://c714s5d7d5765" path="res://objects/player/player.tscn" id="2_j8ivh"] +[ext_resource type="Script" uid="uid://ntpaank0h0a0" path="res://systems/bullets/bullet.gd" id="3_hlyn7"] +[ext_resource type="Texture2D" uid="uid://xe124f1kgf3x" path="res://graphics/bullets/normal_bullet/bullet_2.png" id="4_hlyn7"] [node name="TestScene" type="Node"] @@ -11,3 +13,10 @@ texture = ExtResource("1_g7g4h") [node name="Player" parent="." instance=ExtResource("2_j8ivh")] position = Vector2(100, 99) + +[node name="Bullet" type="Area2D" parent="."] +position = Vector2(169, 130) +script = ExtResource("3_hlyn7") +texture = ExtResource("4_hlyn7") +hitbox_size = Vector2i(6, 6) +metadata/_custom_type_script = "uid://ntpaank0h0a0" diff --git a/systems/bullets/bullet.gd b/systems/bullets/bullet.gd new file mode 100644 index 0000000..254b1f8 --- /dev/null +++ b/systems/bullets/bullet.gd @@ -0,0 +1,37 @@ +@tool +class_name Bullet +extends Area2D + + +static var _hitbox_shapes: Dictionary[Vector2i, RectangleShape2D] = {} + + +@export var texture: Texture2D: + set(value): + texture = value + queue_redraw() + +@export var hitbox_size: Vector2i: + set(value): + hitbox_size = value + if not _hitbox_shapes.has(hitbox_size): + var new_shape = RectangleShape2D.new() + new_shape.size = hitbox_size + _hitbox_shapes[hitbox_size] = new_shape + _hitbox.shape = _hitbox_shapes[hitbox_size] + + +var _hitbox: CollisionShape2D = CollisionShape2D.new() + + +func _init() -> void: + _hitbox.debug_color.a = 0.0 + add_child(_hitbox) + + +func _draw() -> void: + draw_texture(texture, -texture.get_size() * 0.5) + + +func _get_configuration_warnings() -> PackedStringArray: + return [] diff --git a/systems/bullets/bullet.gd.uid b/systems/bullets/bullet.gd.uid new file mode 100644 index 0000000..d8519b7 --- /dev/null +++ b/systems/bullets/bullet.gd.uid @@ -0,0 +1 @@ +uid://ntpaank0h0a0