From f34eff18a7d1191e46c2e2ced596c369594bf167 Mon Sep 17 00:00:00 2001 From: kdx Date: Sun, 29 Oct 2023 18:27:02 +0100 Subject: kill it --- ColorRect.gd | 2 +- Globals.gd | 6 ++++++ Primogemmes.gd | 3 +++ arrow.gd | 17 +++++++++++++++++ arrow.gdshader | 6 ++++++ arrow.png | Bin 0 -> 30112 bytes arrow.png.import | 34 ++++++++++++++++++++++++++++++++++ arrow.tscn | 23 +++++++++++++++++++++++ dicaprio.gd | 28 ++++++++++++++++++++++++++++ dicaprio.png | Bin 0 -> 65352 bytes dicaprio.png.import | 34 ++++++++++++++++++++++++++++++++++ dicaprio.tscn | 24 ++++++++++++++++++++++++ game.tscn | 7 ++++++- player.gd | 38 +++++++++++++++++++++++++++++++++++--- player.tscn | 17 +++++++++++++---- 15 files changed, 230 insertions(+), 9 deletions(-) create mode 100644 arrow.gd create mode 100644 arrow.gdshader create mode 100644 arrow.png create mode 100644 arrow.png.import create mode 100644 arrow.tscn create mode 100644 dicaprio.gd create mode 100644 dicaprio.png create mode 100644 dicaprio.png.import create mode 100644 dicaprio.tscn diff --git a/ColorRect.gd b/ColorRect.gd index 5049898..15a5156 100644 --- a/ColorRect.gd +++ b/ColorRect.gd @@ -7,7 +7,7 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(_delta: float) -> void: +func _physics_process(_delta: float) -> void: if !Globals.FUN: color.r = 0 else: diff --git a/Globals.gd b/Globals.gd index db676c9..47c5d24 100644 --- a/Globals.gd +++ b/Globals.gd @@ -6,3 +6,9 @@ const LIMITS = Vector2(WIDTH, HEIGHT) const LIMITS_MIN = -LIMITS / 2 const LIMITS_MAX = LIMITS / 2 var FUN = false + +func spawn_primogem(pos: Vector2) -> void: + var primogem: PackedScene = load("res://coin.tscn") + var e: Area2D = primogem.instantiate() + e.position = Vector2(pos.x, pos.y) + get_node("../Game/Coins").add_child(e) diff --git a/Primogemmes.gd b/Primogemmes.gd index 9224276..06ae9d3 100644 --- a/Primogemmes.gd +++ b/Primogemmes.gd @@ -12,6 +12,9 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta: float) -> void: text = ogtext + str(count) + + +func _physics_process(_delta: float) -> void: modulate.r = randi_range(0, 1) modulate.g = randi_range(0, 1) modulate.b = randi_range(0, 1) diff --git a/arrow.gd b/arrow.gd new file mode 100644 index 0000000..829edd7 --- /dev/null +++ b/arrow.gd @@ -0,0 +1,17 @@ +extends Area2D + +var velocity: Vector2 + + +func type() -> String: return "arrow" + + +func damage(other: Area2D) -> void: + other.damage(1) + queue_free() + +func _physics_process(_delta: float) -> void: + position += velocity + if position.x < -Globals.WIDTH / 2. or position.y < -Globals.HEIGHT / 2. or \ + position.x > Globals.WIDTH / 2. or position.y > Globals.HEIGHT / 2.: + queue_free() diff --git a/arrow.gdshader b/arrow.gdshader new file mode 100644 index 0000000..4c0a239 --- /dev/null +++ b/arrow.gdshader @@ -0,0 +1,6 @@ +shader_type canvas_item; + +void fragment() { + float a = sin(TIME * 30.); + COLOR.rgb += vec3(a, a, a); +} diff --git a/arrow.png b/arrow.png new file mode 100644 index 0000000..765a096 Binary files /dev/null and b/arrow.png differ diff --git a/arrow.png.import b/arrow.png.import new file mode 100644 index 0000000..423e225 --- /dev/null +++ b/arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmksn3gk0ixjr" +path="res://.godot/imported/arrow.png-9a52328c9c8f79a188b7fabb13b1f3fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://arrow.png" +dest_files=["res://.godot/imported/arrow.png-9a52328c9c8f79a188b7fabb13b1f3fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/arrow.tscn b/arrow.tscn new file mode 100644 index 0000000..16b4cd9 --- /dev/null +++ b/arrow.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=6 format=3 uid="uid://dwmf4eu5xn0bc"] + +[ext_resource type="Texture2D" uid="uid://dmksn3gk0ixjr" path="res://arrow.png" id="1_cagmk"] +[ext_resource type="Script" path="res://arrow.gd" id="1_cg6vj"] +[ext_resource type="Shader" path="res://arrow.gdshader" id="1_p0a20"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tt0m2"] +shader = ExtResource("1_p0a20") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_j0cyp"] +size = Vector2(732, 20) + +[node name="Arrow" type="Area2D"] +scale = Vector2(0.2, 0.2) +script = ExtResource("1_cg6vj") + +[node name="Arrow" type="Sprite2D" parent="."] +material = SubResource("ShaderMaterial_tt0m2") +texture = ExtResource("1_cagmk") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(27, 0) +shape = SubResource("RectangleShape2D_j0cyp") diff --git a/dicaprio.gd b/dicaprio.gd new file mode 100644 index 0000000..3750015 --- /dev/null +++ b/dicaprio.gd @@ -0,0 +1,28 @@ +extends Area2D + +@onready var player: Node2D = get_node("../Player") +@export var speed = 2.0 +@export var life = 3.0 + + +func type() -> String: return "dicaprio" + + +func _physics_process(_delta: float) -> void: + $Glitch.position = Vector2(randf_range(-16, 16), randf_range(-16, 16)) + $Glitch.modulate.r = randi() % 2 + $Glitch.modulate.g = randi() % 2 + $Glitch.modulate.b = randi() % 2 + position += (player.position - position).normalized() * speed + + +func _on_area_entered(area: Area2D) -> void: + if area.type() == "arrow": + area.damage(self) + + +func damage(x: float) -> void: + life -= x + if life <= 0: + Globals.spawn_primogem(position) + queue_free() diff --git a/dicaprio.png b/dicaprio.png new file mode 100644 index 0000000..c62f59d Binary files /dev/null and b/dicaprio.png differ diff --git a/dicaprio.png.import b/dicaprio.png.import new file mode 100644 index 0000000..47eff7a --- /dev/null +++ b/dicaprio.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rfclri1liv0m" +path="res://.godot/imported/dicaprio.png-ebfa4f242ca1dfedd6462213b041cd4a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://dicaprio.png" +dest_files=["res://.godot/imported/dicaprio.png-ebfa4f242ca1dfedd6462213b041cd4a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/dicaprio.tscn b/dicaprio.tscn new file mode 100644 index 0000000..976a401 --- /dev/null +++ b/dicaprio.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=3 uid="uid://cns884oaxgoof"] + +[ext_resource type="Texture2D" uid="uid://rfclri1liv0m" path="res://dicaprio.png" id="1_6cbbs"] +[ext_resource type="Script" path="res://dicaprio.gd" id="1_wrbpo"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_sakix"] +radius = 23.0 +height = 174.0 + +[node name="Area2D" type="Area2D"] +script = ExtResource("1_wrbpo") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CapsuleShape2D_sakix") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.5, 0.5) +texture = ExtResource("1_6cbbs") + +[node name="Glitch" type="Sprite2D" parent="."] +scale = Vector2(0.5, 0.5) +texture = ExtResource("1_6cbbs") + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] diff --git a/game.tscn b/game.tscn index d7ee8d6..e438463 100644 --- a/game.tscn +++ b/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://8ps5533ot84q"] +[gd_scene load_steps=9 format=3 uid="uid://8ps5533ot84q"] [ext_resource type="PackedScene" uid="uid://c2g45v321qddb" path="res://player.tscn" id="1_3q46r"] [ext_resource type="Script" path="res://ColorRect.gd" id="1_kv47q"] @@ -6,6 +6,7 @@ [ext_resource type="PackedScene" uid="uid://4oytwe0gnp18" path="res://ui.tscn" id="2_3layq"] [ext_resource type="Script" path="res://Genshinlogo.gd" id="2_8h31p"] [ext_resource type="PackedScene" uid="uid://bj48tpvf86kjo" path="res://coin.tscn" id="2_qfcfl"] +[ext_resource type="PackedScene" uid="uid://cns884oaxgoof" path="res://dicaprio.tscn" id="8_llto6"] [ext_resource type="AudioStream" uid="uid://c7pa506xccdyq" path="res://ost.ogg" id="9_bhhfh"] [node name="Game" type="Node2D"] @@ -34,6 +35,7 @@ texture = ExtResource("1_tfg20") script = ExtResource("2_8h31p") [node name="Player" parent="." instance=ExtResource("1_3q46r")] +z_index = 1 [node name="Camera2D" type="Camera2D" parent="Player"] editor_draw_screen = false @@ -109,3 +111,6 @@ position = Vector2(-341, 201) [node name="Coin7" parent="Coins" instance=ExtResource("2_qfcfl")] position = Vector2(39, -55) + +[node name="Dicaprio" parent="." instance=ExtResource("8_llto6")] +position = Vector2(724, 537) diff --git a/player.gd b/player.gd index 9743b4c..fdf8db8 100644 --- a/player.gd +++ b/player.gd @@ -1,9 +1,13 @@ extends Area2D @export var speed := 2.0 +@export var projectile_speed := 3.0 +@export var visibility := 320.0 +@export var arrow: PackedScene @onready var primogemmes = get_node("../CanvasUI/UI/Primogemmes") @onready var sfxs = [ $SfxOO, $SfxEE, $SfxOO2 ] -@onready var sfx = 0 +var sfx = 0 +var aiming: Area2D = null func type() -> String: return "player" @@ -26,14 +30,20 @@ func get_input() -> Vector2: # Called every frame. 'delta' is the elapsed time since the previous frame. func _physics_process(_delta2: float) -> void: - position += get_local_mouse_position().normalized() * speed + var mouse := get_local_mouse_position().normalized() + position += mouse * speed position = position.clamp(Globals.LIMITS_MIN, Globals.LIMITS_MAX) #var color := Color() #color.r = randi() % 2 #color.g = randi() % 2 #color.b = randi() % 2 #material.set_shader_parameter("color", color) - + var enemy = find_enemy() + aiming = null + if enemy != null: + var dist := absf((position - enemy.position).length()) + if dist < visibility: + aiming = enemy func _on_area_entered(area: Area2D) -> void: @@ -52,3 +62,25 @@ func select_character(s: String) -> void: $Sprite2D.frame = 0 "luigi": $Sprite2D.frame = 1 + + +func find_enemy() -> Area2D: + var closest: Area2D = null + var closest_dist: float = 10000000000000.0 + for e in get_node("..").get_children(): + if e.has_method("type") and e.type() == "dicaprio": + var dist := absf((position - e.position).length()) + if dist < closest_dist: + closest_dist = dist + closest = e + return closest + + +func _on_timer_timeout() -> void: + if aiming == null: return + var e: Area2D = arrow.instantiate() + e.position = position + var norm := (aiming.position - position).normalized() + e.rotation = norm.angle() + e.velocity = norm * projectile_speed + get_node("..").add_child(e) diff --git a/player.tscn b/player.tscn index 602c8a4..a0f62d1 100644 --- a/player.tscn +++ b/player.tscn @@ -1,17 +1,21 @@ -[gd_scene load_steps=7 format=3 uid="uid://c2g45v321qddb"] +[gd_scene load_steps=8 format=3 uid="uid://c2g45v321qddb"] [ext_resource type="Script" path="res://player.gd" id="1_tleme"] +[ext_resource type="PackedScene" uid="uid://dwmf4eu5xn0bc" path="res://arrow.tscn" id="2_fmkn7"] [ext_resource type="Texture2D" uid="uid://cq3m7fo355xdf" path="res://characters.png" id="2_mu4pp"] [ext_resource type="AudioStream" uid="uid://siphq0i4rti2" path="res://oo.wav" id="3_0gvk7"] [ext_resource type="AudioStream" uid="uid://dnx38lwh4b34a" path="res://ee.wav" id="4_on1ta"] [ext_resource type="AudioStream" uid="uid://xbua3i4neqg5" path="res://oo2.wav" id="5_be6a0"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_kt8c8"] -size = Vector2(128, 128) +[sub_resource type="CircleShape2D" id="CircleShape2D_80n2h"] +radius = 62.0081 [node name="Player" type="Area2D"] script = ExtResource("1_tleme") speed = 8.0 +projectile_speed = 12.0 +visibility = 960.0 +arrow = ExtResource("2_fmkn7") metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="."] @@ -20,7 +24,7 @@ texture = ExtResource("2_mu4pp") hframes = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("RectangleShape2D_kt8c8") +shape = SubResource("CircleShape2D_80n2h") [node name="SfxOO" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("3_0gvk7") @@ -31,4 +35,9 @@ stream = ExtResource("4_on1ta") [node name="SfxOO2" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("5_be6a0") +[node name="Timer" type="Timer" parent="."] +process_callback = 0 +autostart = true + [connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] -- cgit v1.2.3