diff options
author | kdx <kikoodx@paranoici.org> | 2023-10-29 18:27:02 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-10-29 18:27:02 +0100 |
commit | f34eff18a7d1191e46c2e2ced596c369594bf167 (patch) | |
tree | 06cb0d7fc703209f628b9975b5307c5e4310fade | |
parent | 9c37f3273092bb1a0237888ed09679e062fca684 (diff) | |
download | genshin2-f34eff18a7d1191e46c2e2ced596c369594bf167.tar.gz |
kill it
-rw-r--r-- | ColorRect.gd | 2 | ||||
-rw-r--r-- | Globals.gd | 6 | ||||
-rw-r--r-- | Primogemmes.gd | 3 | ||||
-rw-r--r-- | arrow.gd | 17 | ||||
-rw-r--r-- | arrow.gdshader | 6 | ||||
-rw-r--r-- | arrow.png | bin | 0 -> 30112 bytes | |||
-rw-r--r-- | arrow.png.import | 34 | ||||
-rw-r--r-- | arrow.tscn | 23 | ||||
-rw-r--r-- | dicaprio.gd | 28 | ||||
-rw-r--r-- | dicaprio.png | bin | 0 -> 65352 bytes | |||
-rw-r--r-- | dicaprio.png.import | 34 | ||||
-rw-r--r-- | dicaprio.tscn | 24 | ||||
-rw-r--r-- | game.tscn | 7 | ||||
-rw-r--r-- | player.gd | 38 | ||||
-rw-r--r-- | player.tscn | 17 |
15 files changed, 230 insertions, 9 deletions
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: @@ -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 Binary files differnew file mode 100644 index 0000000..765a096 --- /dev/null +++ b/arrow.png 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 Binary files differnew file mode 100644 index 0000000..c62f59d --- /dev/null +++ b/dicaprio.png 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"] @@ -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) @@ -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"] |