guns and dogs

This commit is contained in:
IMK 2024-03-06 22:05:35 +01:00
parent 248b7b94d6
commit b44bf65702
43 changed files with 1476 additions and 160 deletions

BIN
assets/MOUSE.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

34
assets/MOUSE.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmmm5xr6m7lb8"
path="res://.godot/imported/MOUSE.png-713d73e5cc1325cdd5d58068cf19d8bf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/MOUSE.png"
dest_files=["res://.godot/imported/MOUSE.png-713d73e5cc1325cdd5d58068cf19d8bf.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

BIN
assets/chores.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

34
assets/chores.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3cpa43wrk5ih"
path="res://.godot/imported/chores.png-4701f6260e41a338783c1947d3947064.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/chores.png"
dest_files=["res://.godot/imported/chores.png-4701f6260e41a338783c1947d3947064.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

BIN
assets/dog/face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dddx6l8owf5x6"
path="res://.godot/imported/face.png-15f0401002d7cba90f186eb3e32d598b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/dog/face.png"
dest_files=["res://.godot/imported/face.png-15f0401002d7cba90f186eb3e32d598b.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

BIN
assets/dog/head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn4k2g7ye2jrq"
path="res://.godot/imported/head.png-723d11f6d9ef6f4495bc33a80fe25922.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/dog/head.png"
dest_files=["res://.godot/imported/head.png-723d11f6d9ef6f4495bc33a80fe25922.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

BIN
assets/dog/torso.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dl013bmiia5bo"
path="res://.godot/imported/torso.png-9a87a70a9ed92213ad6b77fdb045bea7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/dog/torso.png"
dest_files=["res://.godot/imported/torso.png-9a87a70a9ed92213ad6b77fdb045bea7.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

BIN
assets/joel/face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dm41mixjdfa07"
path="res://.godot/imported/face.png-c0a9df339b85055712b832eaad601d09.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/joel/face.png"
dest_files=["res://.godot/imported/face.png-c0a9df339b85055712b832eaad601d09.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

BIN
assets/joel/head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7emacib0c1o7"
path="res://.godot/imported/head.png-a251a122079d3beb38f6d48573713730.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/joel/head.png"
dest_files=["res://.godot/imported/head.png-a251a122079d3beb38f6d48573713730.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

BIN
assets/joel/torso.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bq2ck85m7c6ai"
path="res://.godot/imported/torso.png-476a000523c4d6c89615518c782d5827.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/joel/torso.png"
dest_files=["res://.godot/imported/torso.png-476a000523c4d6c89615518c782d5827.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

BIN
assets/sheet02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

34
assets/sheet02.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dw415r5q7gjav"
path="res://.godot/imported/sheet02.png-0118eec9ffb962618662fb98c07a6c2d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sheet02.png"
dest_files=["res://.godot/imported/sheet02.png-0118eec9ffb962618662fb98c07a6c2d.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

BIN
assets/tailor/bowtie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b1ftt3c06srb"
path="res://.godot/imported/bowtie.png-de3366fa1ac49f34877092b9de1bb318.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/tailor/bowtie.png"
dest_files=["res://.godot/imported/bowtie.png-de3366fa1ac49f34877092b9de1bb318.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

BIN
assets/tailor/face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cw3ia2pxvrjnb"
path="res://.godot/imported/face.png-39d1cba2b542964f3a90bebb8cef73d4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/tailor/face.png"
dest_files=["res://.godot/imported/face.png-39d1cba2b542964f3a90bebb8cef73d4.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

BIN
assets/tailor/head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8046hu2mejxq"
path="res://.godot/imported/head.png-3896e46b7b4e8b5edc5b04f5e7fd600f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/tailor/head.png"
dest_files=["res://.godot/imported/head.png-3896e46b7b4e8b5edc5b04f5e7fd600f.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

BIN
assets/tailor/torso.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxjhummaioy11"
path="res://.godot/imported/torso.png-f035b88c735aeb63941829d5cf838f15.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/tailor/torso.png"
dest_files=["res://.godot/imported/torso.png-f035b88c735aeb63941829d5cf838f15.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

13
mouseparticle.gd Normal file
View File

@ -0,0 +1,13 @@
extends Line2D
var maxlen = 2
func _process(delta):
var pos = get_global_mouse_position()
add_point(pos)
func _physics_process(delta):
if len(points) >= maxlen:
remove_point(0)

View File

@ -15,6 +15,10 @@ config/features=PackedStringArray("4.2", "Forward Plus")
boot_splash/bg_color=Color(1, 1, 1, 1) boot_splash/bg_color=Color(1, 1, 1, 1)
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload]
Playmouseparticle="*res://tscn/playmouseparticle.tscn"
[display] [display]
window/size/viewport_width=576 window/size/viewport_width=576
@ -24,6 +28,9 @@ window/size/window_width_override=1152
window/size/window_height_override=648 window/size/window_height_override=648
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
window/stretch/scale_mode="integer" window/stretch/scale_mode="integer"
mouse_cursor/custom_image="res://assets/MOUSE.png"
mouse_cursor/custom_image_hotspot=Vector2(6, 6)
mouse_cursor/tooltip_position_offset=Vector2(6, 6)
[input] [input]
@ -57,6 +64,11 @@ interact={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
] ]
} }
shoot={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(161, 20),"global_position":Vector2(165, 61),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[rendering] [rendering]

View File

@ -1,14 +1,20 @@
extends Node2D extends Node2D
@onready var dial = $CharacterBody2D/CanvasLayer @onready var dial = $plr/CanvasLayer
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
await get_tree().create_timer(3).timeout await get_tree().create_timer(3).timeout
dial.typewrite("Oh what a wonderful day today!", load("res://sfx/meow.wav"),2, false) dial.typewrite("Oh what a wonderful day today!", load("res://sfx/meow.wav"),2, false)
await dial.Done await dial.Done
dial.typewrite("I should do my chores!", load("res://sfx/meow.wav"),2, true) dial.typewrite("I should do my chores!", load("res://sfx/meow.wav"),2, true)
$plr/chores/Sprite2D2.position.x += 100
$plr/chores/Sprite2D2.visible = true
var tweener = get_tree().create_tween()
tweener.set_trans(Tween.TRANS_CUBIC)
tweener.set_ease(Tween.EASE_IN_OUT)
tweener.tween_property($plr/chores/Sprite2D2,"position", Vector2(519,70),1)
await dial.Done await dial.Done
$CharacterBody2D.moving = true $plr.moving = true
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(delta):

View File

@ -3,19 +3,26 @@ extends CharacterBody2D
signal interact signal interact
signal interact2 signal interact2
const SPEED = 300.0 const SPEED = 300.0
@onready var gun = $gun
var has_gun = false
@export var moving = true @export var moving = true
var bullets = 0
var can_shoot = true
# Get the gravity from the project settings to be synced with RigidBody nodes. # Get the gravity from the project settings to be synced with RigidBody nodes.
func handle_layer(direction): func handle_layer(direction):
if round(direction.y) == -1: if round(direction.y) == -1:
$character/body/tail.z_index = 1 $character/body/tail.z_index = 1
$gun.z_index = -1
$character/body/face.visible = false $character/body/face.visible = false
elif round(direction.y) == 1: elif round(direction.y) == 1:
$character/body/tail.z_index = 0 $character/body/tail.z_index = 0
$gun.z_index = 0
$character/body/face.visible = true $character/body/face.visible = true
func _ready():
if not has_gun:
$gun.visible = false
func _physics_process(_delta): func _physics_process(_delta):
if Input.is_action_just_pressed("interact"): if Input.is_action_just_pressed("interact"):
@ -27,12 +34,24 @@ func _physics_process(_delta):
# Get the input direction and handle the movement/deceleration. # Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gawameplay actions. # As good practice, you should replace UI actions with custom gawameplay actions.
var direction = Input.get_vector("left","right","up","down") var direction = Input.get_vector("left","right","up","down")
if Input.is_action_pressed("shoot") and can_shoot and has_gun:
var bullet = preload("res://tscn/bullet.tscn").instantiate()
bullet.position = gun.global_position
bullet.z_index = gun.z_index
var dir = (get_global_mouse_position() - gun.global_position).normalized()
bullet.global_rotation = dir.angle() + PI / 2.0
bullet.direction = dir
get_tree().current_scene.add_child(bullet)
$cooldown.start()
can_shoot = false
if direction == Vector2(0,0): if direction == Vector2(0,0):
$AnimationPlayer.current_animation = "idle" $AnimationPlayer.current_animation = "idle"
else: else:
handle_layer(direction) handle_layer(direction)
print(direction.x)
if not direction.x == 0: if not direction.x == 0:
$character.scale.x = round(direction.x) $character.scale.x = round(direction.x)
@ -44,3 +63,9 @@ func _physics_process(_delta):
move_and_slide() move_and_slide()
func _on_cooldown_timeout():
can_shoot = true

20
tscn/bullet.gd Normal file
View File

@ -0,0 +1,20 @@
extends CharacterBody2D
var direction = Vector2.LEFT
@export var speed = 6# pixels / s
@export var damage = 4
func _physics_process(delta):
var mover = move_and_collide(direction * speed)
func _on_visible_on_screen_notifier_2d_screen_exited():
queue_free()
func _on_area_2d_body_entered(body):
if not body.name == "plr":
body.die()
queue_free()

53
tscn/bullet.tscn Normal file
View File

@ -0,0 +1,53 @@
[gd_scene load_steps=8 format=3 uid="uid://cm6t7t21qai2k"]
[ext_resource type="Script" path="res://tscn/bullet.gd" id="1_xkvd4"]
[ext_resource type="Texture2D" uid="uid://dw415r5q7gjav" path="res://assets/sheet02.png" id="2_u4orb"]
[sub_resource type="AtlasTexture" id="AtlasTexture_0degb"]
atlas = ExtResource("2_u4orb")
region = Rect2(166, 36, 5, 3)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6i4pj"]
size = Vector2(5, 3)
[sub_resource type="Curve" id="Curve_0a7jy"]
_data = [Vector2(0.0225989, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_jkm6o"]
curve = SubResource("Curve_0a7jy")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_4tm8h"]
particle_flag_disable_z = true
gravity = Vector3(-50, 0, 0)
color = Color(0, 0, 0, 1)
alpha_curve = SubResource("CurveTexture_jkm6o")
[node name="bullet" type="CharacterBody2D"]
script = ExtResource("1_xkvd4")
[node name="Sprite2D" type="Sprite2D" parent="."]
position = Vector2(-2, -1)
texture = SubResource("AtlasTexture_0degb")
centered = false
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
position = Vector2(0.5, 0.5)
scale = Vector2(0.25, 0.15)
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0.5, 0.5)
shape = SubResource("RectangleShape2D_6i4pj")
[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
position = Vector2(-1, 0.5)
process_material = SubResource("ParticleProcessMaterial_4tm8h")
lifetime = 0.4
trail_enabled = true
trail_sections = 2
trail_section_subdivisions = 6
[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"]
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]

12
tscn/city.gd Normal file
View File

@ -0,0 +1,12 @@
extends Node2D
# Called when the node enters the scene tree for the first time.
func _ready():
$plr.has_gun = true
$plr/gun.visible = true
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass

297
tscn/city.tscn Normal file

File diff suppressed because one or more lines are too long

10
tscn/die.gd Normal file
View File

@ -0,0 +1,10 @@
extends CharacterBody2D
func die():
var emitter = preload("res://tscn/enemyhitbox.tscn").instantiate()
get_parent().add_child(emitter)
emitter.position = self.position
emitter.emitting = true
queue_free()

27
tscn/dog.gd Normal file
View File

@ -0,0 +1,27 @@
extends CharacterBody2D
@onready var plr = get_tree().current_scene.get_node("plr")
const SPEED = 300
func _physics_process(delta):
# Add the gravity.
if position.distance_to(plr.position) <= 200:
$AnimationPlayer.current_animation = "attack"
set_process(true)
func _ready():
set_process(false)
func _process(delta):
var dir = (plr.position - self.global_position).normalized()
velocity = dir * SPEED
if not round(dir.x) == 0:
$body.scale.x = round(dir.x)
move_and_slide()
func die():
var emitter = preload("res://tscn/enemyhitbox.tscn").instantiate()
get_parent().add_child(emitter)
emitter.position = self.position
emitter.emitting = true
queue_free()

314
tscn/dog.tscn Normal file
View File

@ -0,0 +1,314 @@
[gd_scene load_steps=10 format=3 uid="uid://bpjluewfoh3fx"]
[ext_resource type="Texture2D" uid="uid://dl013bmiia5bo" path="res://assets/dog/torso.png" id="1_5vi4g"]
[ext_resource type="Script" path="res://tscn/dog.gd" id="1_oog3t"]
[ext_resource type="Texture2D" uid="uid://bn4k2g7ye2jrq" path="res://assets/dog/head.png" id="2_hw6xc"]
[ext_resource type="Texture2D" uid="uid://dddx6l8owf5x6" path="res://assets/dog/face.png" id="3_soffl"]
[sub_resource type="Animation" id="Animation_o38oe"]
resource_name = "Idle"
length = 2.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("body/Torso2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("body/Torso2:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("body/Head2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(2, 2),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, 2)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("body/Head2:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(2, 2),
"update": 0,
"values": [0.0, 0.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("body/Face2:position")
tracks/4/interp = 2
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.31058, 1, 1.3),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(2, -8), Vector2(2, -8), Vector2(2, -6), Vector2(2, -6)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("body/Face2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.31058, 1, 1.3),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, 0.0, 0.0]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("body/Torso2:skew")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_0l02f"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("body/Torso2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("body/Torso2:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("body/Head2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("body/Head2:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("body/Face2:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(2, -8)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("body/Face2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("body/Torso2:skew")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_gbjf2"]
resource_name = "attack"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("body/Torso2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("body/Torso2:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("body/Head2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("body/Head2:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("body/Face2:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(2, -8), Vector2(3, -6)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("body/Face2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.0]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("body/Torso2:skew")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.380482]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_7yvlc"]
_data = {
"Idle": SubResource("Animation_o38oe"),
"RESET": SubResource("Animation_0l02f"),
"attack": SubResource("Animation_gbjf2")
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_nakw7"]
size = Vector2(20, 26.5)
[node name="dog" type="CharacterBody2D"]
script = ExtResource("1_oog3t")
[node name="body" type="Node2D" parent="."]
[node name="Torso2" type="Node2D" parent="body"]
[node name="Torso" type="Sprite2D" parent="body/Torso2"]
position = Vector2(0, 9)
texture = ExtResource("1_5vi4g")
[node name="Head2" type="Node2D" parent="body"]
[node name="Head" type="Sprite2D" parent="body/Head2"]
position = Vector2(0, -11)
texture = ExtResource("2_hw6xc")
[node name="Face2" type="Node2D" parent="body"]
position = Vector2(2, -8)
[node name="Face" type="Sprite2D" parent="body/Face2"]
position = Vector2(-1, 0)
texture = ExtResource("3_soffl")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_7yvlc")
}
autoplay = "Idle"
blend_times = [&"attack", &"Idle", 2.0]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -1.75)
shape = SubResource("RectangleShape2D_nakw7")

23
tscn/enemyhitbox.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=2 format=3 uid="uid://dx20e0gj3og1l"]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_oatse"]
particle_flag_disable_z = true
angular_velocity_min = 720.0
angular_velocity_max = 720.0
radial_velocity_min = -82.29
radial_velocity_max = 251.04
gravity = Vector3(0, 98, 0)
linear_accel_min = -37.25
linear_accel_max = 100.0
tangential_accel_min = -100.0
tangential_accel_max = 100.0
damping_max = 100.0
color = Color(1, 0.34902, 0.266667, 1)
[node name="GPUParticles2D" type="GPUParticles2D"]
emitting = false
amount = 26
process_material = SubResource("ParticleProcessMaterial_oatse")
one_shot = true
explosiveness = 1.0
randomness = 1.0

17
tscn/gun.gd Normal file
View File

@ -0,0 +1,17 @@
extends Node2D
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
var dir = (get_global_mouse_position() - global_position).normalized()
global_rotation = dir.angle() + PI / 2.0
if global_rotation < 0:
$Sprite2D.flip_v = true
else:
$Sprite2D.flip_v = false

View File

@ -2,12 +2,99 @@
[ext_resource type="Texture2D" uid="uid://tyvdq4i2kfx7" path="res://assets/lines.png" id="1_pcy5j"] [ext_resource type="Texture2D" uid="uid://tyvdq4i2kfx7" path="res://assets/lines.png" id="1_pcy5j"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_5rlqc"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_off2p"]
texture = ExtResource("1_pcy5j") texture = ExtResource("1_pcy5j")
texture_region_size = Vector2i(10, 10) texture_region_size = Vector2i(10, 10)
0:7/0 = 0 0:0/0 = 0
0:7/0/physics_layer_0/linear_velocity = Vector2(0, 0) 0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:7/0/physics_layer_0/angular_velocity = 0.0 0:0/0/physics_layer_0/angular_velocity = 0.0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
1:0/0 = 0
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:0/0/physics_layer_0/angular_velocity = 0.0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
2:0/0 = 0
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:0/0/physics_layer_0/angular_velocity = 0.0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
3:0/0 = 0
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:0/0/physics_layer_0/angular_velocity = 0.0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
4:0/0 = 0
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:0/0/physics_layer_0/angular_velocity = 0.0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
5:0/0 = 0
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:0/0/physics_layer_0/angular_velocity = 0.0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
0:2/0 = 0
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:2/0/physics_layer_0/angular_velocity = 0.0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
1:2/0 = 0
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:2/0/physics_layer_0/angular_velocity = 0.0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
2:2/0 = 0
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:2/0/physics_layer_0/angular_velocity = 0.0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
3:2/0 = 0
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:2/0/physics_layer_0/angular_velocity = 0.0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
4:2/0 = 0
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:2/0/physics_layer_0/angular_velocity = 0.0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
5:2/0 = 0
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:2/0/physics_layer_0/angular_velocity = 0.0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
0:4/0 = 0
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:4/0/physics_layer_0/angular_velocity = 0.0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
1:4/0 = 0
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:4/0/physics_layer_0/angular_velocity = 0.0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
2:4/0 = 0
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:4/0/physics_layer_0/angular_velocity = 0.0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
3:4/0 = 0
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:4/0/physics_layer_0/angular_velocity = 0.0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
4:4/0 = 0
4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:4/0/physics_layer_0/angular_velocity = 0.0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
5:4/0 = 0
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:4/0/physics_layer_0/angular_velocity = 0.0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -3.5, 5, -3.5, 5, 0, -5, 0)
1:5/0 = 0
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:5/0/physics_layer_0/angular_velocity = 0.0
0:6/0 = 0
0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:6/0/physics_layer_0/angular_velocity = 0.0
2:6/0 = 0
2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:6/0/physics_layer_0/angular_velocity = 0.0
3:6/0 = 0
3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:6/0/physics_layer_0/angular_velocity = 0.0
4:6/0 = 0
4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:6/0/physics_layer_0/angular_velocity = 0.0
5:6/0 = 0
5:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:6/0/physics_layer_0/angular_velocity = 0.0
1:7/0 = 0 1:7/0 = 0
1:7/0/physics_layer_0/linear_velocity = Vector2(0, 0) 1:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:7/0/physics_layer_0/angular_velocity = 0.0 1:7/0/physics_layer_0/angular_velocity = 0.0
@ -23,150 +110,6 @@ texture_region_size = Vector2i(10, 10)
5:7/0 = 0 5:7/0 = 0
5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0) 5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:7/0/physics_layer_0/angular_velocity = 0.0 5:7/0/physics_layer_0/angular_velocity = 0.0
5:6/0 = 0
5:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:6/0/physics_layer_0/angular_velocity = 0.0
4:6/0 = 0
4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:6/0/physics_layer_0/angular_velocity = 0.0
3:6/0 = 0
3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:6/0/physics_layer_0/angular_velocity = 0.0
2:6/0 = 0
2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:6/0/physics_layer_0/angular_velocity = 0.0
1:6/0 = 0
1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:6/0/physics_layer_0/angular_velocity = 0.0
0:6/0 = 0
0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:6/0/physics_layer_0/angular_velocity = 0.0
1:5/0 = 0
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:5/0/physics_layer_0/angular_velocity = 0.0
1:4/0 = 0
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:4/0/physics_layer_0/angular_velocity = 0.0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
1:3/0 = 0
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:3/0/physics_layer_0/angular_velocity = 0.0
1:2/0 = 0
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:2/0/physics_layer_0/angular_velocity = 0.0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
0:2/0 = 0
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:2/0/physics_layer_0/angular_velocity = 0.0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
0:1/0 = 0
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:1/0/physics_layer_0/angular_velocity = 0.0
0:0/0 = 0
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:0/0/physics_layer_0/angular_velocity = 0.0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
0:3/0 = 0
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:3/0/physics_layer_0/angular_velocity = 0.0
0:4/0 = 0
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:4/0/physics_layer_0/angular_velocity = 0.0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
0:5/0 = 0
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
0:5/0/physics_layer_0/angular_velocity = 0.0
1:0/0 = 0
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:0/0/physics_layer_0/angular_velocity = 0.0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
1:1/0 = 0
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
1:1/0/physics_layer_0/angular_velocity = 0.0
2:5/0 = 0
2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:5/0/physics_layer_0/angular_velocity = 0.0
2:4/0 = 0
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:4/0/physics_layer_0/angular_velocity = 0.0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
2:3/0 = 0
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:3/0/physics_layer_0/angular_velocity = 0.0
2:2/0 = 0
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:2/0/physics_layer_0/angular_velocity = 0.0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
2:1/0 = 0
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:1/0/physics_layer_0/angular_velocity = 0.0
2:0/0 = 0
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
2:0/0/physics_layer_0/angular_velocity = 0.0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
3:1/0 = 0
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:1/0/physics_layer_0/angular_velocity = 0.0
4:1/0 = 0
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:1/0/physics_layer_0/angular_velocity = 0.0
4:0/0 = 0
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:0/0/physics_layer_0/angular_velocity = 0.0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
3:0/0 = 0
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:0/0/physics_layer_0/angular_velocity = 0.0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
5:0/0 = 0
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:0/0/physics_layer_0/angular_velocity = 0.0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
5:1/0 = 0
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:1/0/physics_layer_0/angular_velocity = 0.0
4:2/0 = 0
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:2/0/physics_layer_0/angular_velocity = 0.0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
4:3/0 = 0
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:3/0/physics_layer_0/angular_velocity = 0.0
4:4/0 = 0
4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:4/0/physics_layer_0/angular_velocity = 0.0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
4:5/0 = 0
4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
4:5/0/physics_layer_0/angular_velocity = 0.0
5:5/0 = 0
5:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:5/0/physics_layer_0/angular_velocity = 0.0
5:4/0 = 0
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:4/0/physics_layer_0/angular_velocity = 0.0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
5:3/0 = 0
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:3/0/physics_layer_0/angular_velocity = 0.0
5:2/0 = 0
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
5:2/0/physics_layer_0/angular_velocity = 0.0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
3:3/0 = 0
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:3/0/physics_layer_0/angular_velocity = 0.0
3:4/0 = 0
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:4/0/physics_layer_0/angular_velocity = 0.0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
3:5/0 = 0
3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:5/0/physics_layer_0/angular_velocity = 0.0
3:2/0 = 0
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
3:2/0/physics_layer_0/angular_velocity = 0.0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -4, 5, -4, 5, -2.125, -5, -2.125)
[sub_resource type="TileSet" id="TileSet_uqloi"] [sub_resource type="TileSet" id="TileSet_uqloi"]
tile_size = Vector2i(10, 10) tile_size = Vector2i(10, 10)
@ -174,7 +117,7 @@ physics_layer_0/collision_layer = 1
terrain_set_0/mode = 0 terrain_set_0/mode = 0
terrain_set_0/terrain_0/name = "line" terrain_set_0/terrain_0/name = "line"
terrain_set_0/terrain_0/color = Color(0, 0, 0, 1) terrain_set_0/terrain_0/color = Color(0, 0, 0, 1)
sources/0 = SubResource("TileSetAtlasSource_5rlqc") sources/1 = SubResource("TileSetAtlasSource_off2p")
[node name="TileMap" type="TileMap"] [node name="TileMap" type="TileMap"]
tile_set = SubResource("TileSet_uqloi") tile_set = SubResource("TileSet_uqloi")

View File

@ -35,12 +35,12 @@ flip_h = true
[node name="TileMap" parent="." instance=ExtResource("2_s78l6")] [node name="TileMap" parent="." instance=ExtResource("2_s78l6")]
layer_0/name = "decoration" layer_0/name = "decoration"
layer_0/tile_data = PackedInt32Array(1376272, 131072, 4, 1376273, 65536, 0, 1376274, 327680, 4, 1376275, 65536, 2, 1376276, 327680, 4, 1376277, 327680, 4, 1376278, 196608, 2, 1376279, 0, 0, 1376280, 131072, 0, 1376281, 196608, 0, 1376282, 327680, 2, 1376283, 327680, 2, 1376284, 262144, 0, 1376285, 196608, 4, 1376286, 262144, 2, 1376287, 65536, 2, 1376288, 262144, 2, 1376289, 262144, 4, 1376290, 196608, 2, 1376291, 327680, 2) layer_0/tile_data = PackedInt32Array(1376272, 327681, 0, 1376273, 262145, 0, 1376274, 196609, 0, 1376275, 65537, 0, 1376276, 65537, 0, 1376277, 196609, 0, 1376278, 196609, 0, 1376279, 196609, 0, 1376280, 327681, 0, 1376281, 1, 0, 1376282, 1, 0, 1376283, 1, 0, 1376284, 196609, 0, 1376285, 327681, 0, 1376286, 65537, 0, 1376287, 327681, 0, 1376288, 196609, 0, 1376289, 1, 0, 1376290, 131073, 0, 1376291, 262145, 0)
layer_1/name = "lines" layer_1/name = "lines"
layer_1/z_index = 1 layer_1/z_index = 1
layer_1/tile_data = PackedInt32Array(2097173, 0, 0, 2097174, 65536, 0, 2097175, 131072, 0, 2097176, 0, 0, 2097177, 65536, 0, 2097178, 131072, 0, 2097179, 0, 0, 2097180, 65536, 0, 2097181, 131072, 0, 2097182, 0, 0, 2097183, 65536, 0, 2097184, 131072, 0, 2097185, 196608, 0, 2097186, 262144, 0, 2097187, 327680, 0, 1900580, 131072, 1610612738, 1966116, 65536, 1610612738, 2031652, 0, 1610612738, 1703972, 131072, 1610612738, 1769508, 65536, 1610612738, 1835044, 0, 1610612738, 1507364, 131072, 1610612738, 1572900, 65536, 1610612738, 1638436, 0, 1610612738, 1310756, 131072, 1610612738, 1376292, 65536, 1610612738, 1441828, 0, 1610612738, 1114148, 131072, 1610612738, 1179684, 65536, 1610612738, 1245220, 0, 1610612738, 2097171, 0, 0, 2097172, 65536, 0, 2097168, 0, 0, 2097169, 65536, 0, 2097170, 65536, 2, 2097188, 0, 6, 2097167, 0, 268435462, 1900559, 131072, 1342177284, 1966095, 196608, 1342177284, 2031631, 262144, 1342177284, 1835023, 327680, 1342177284, 1638415, 65536, 1342177282, 1703951, 131072, 1342177282, 1769487, 196608, 1342177282, 1441807, 65536, 1342177280, 1507343, 131072, 1342177280, 1572879, 196608, 1342177280, 1310735, 65536, 1342177282, 1376271, 131072, 1342177282, 1114127, 65536, 1342177282, 1179663, 131072, 1342177282, 1245199, 196608, 1342177282, 720913, 196608, 536870914, 720914, 0, 536870916, 720915, 131072, 536870916, 720916, 327680, 536870916, 720917, 0, 536870914, 720918, 131072, 536870912, 720919, 131072, 536870914, 720920, 0, 536870916, 720921, 327680, 536870914, 720922, 327680, 536870912, 720923, 262144, 536870916, 720924, 196608, 536870916, 720925, 327680, 536870912, 720926, 327680, 536870916, 720927, 262144, 536870912, 720928, 262144, 536870916, 720929, 327680, 536870914, 720930, 327680, 536870916, 720931, 327680, 536870912, 852004, 262144, 1073741828, 917540, 196608, 1073741826, 983076, 327680, 1073741826, 1048612, 65536, 1073741824, 786468, 262144, 1073741824, 1048591, 327680, 1879048194, 983055, 131072, 1879048194, 917519, 262144, 1879048194, 851983, 262144, 1879048196, 786447, 327680, 1879048192, 720912, 131072, 536870914, 720932, 0, 1610612742, 720911, 0, 1879048198) layer_1/tile_data = PackedInt32Array(2097173, 262145, 2, 2097174, 196609, 0, 2097175, 196609, 0, 2097176, 327681, 0, 2097177, 65537, 2, 2097178, 1, 2, 2097179, 327681, 2, 2097180, 327681, 2, 2097181, 327681, 0, 2097182, 131073, 2, 2097183, 327681, 2, 2097184, 131073, 0, 2097185, 262145, 2, 2097186, 131073, 0, 2097187, 65537, 2, 1900580, 65537, 1610612736, 1966116, 1, 1610612738, 2031652, 196609, 1610612738, 1703972, 196609, 1610612736, 1769508, 262145, 1610612736, 1835044, 196609, 1610612736, 1507364, 196609, 1610612738, 1572900, 1, 1610612736, 1638436, 1, 1610612736, 1310756, 1, 1610612738, 1376292, 65537, 1610612738, 1441828, 196609, 1610612736, 1114148, 196609, 1610612738, 1179684, 196609, 1610612736, 1245220, 196609, 1610612738, 2097171, 65537, 0, 2097172, 196609, 0, 2097168, 262145, 2, 2097169, 327681, 2, 2097170, 131073, 2, 2097188, 1, 6, 2097167, 1, 1342177286, 1900559, 196609, 1342177280, 1966095, 196609, 1342177282, 2031631, 131073, 1342177284, 1835023, 262145, 1342177284, 1638415, 1, 1342177282, 1703951, 262145, 1342177280, 1769487, 65537, 1342177282, 1441807, 327681, 1342177282, 1507343, 262145, 1342177282, 1572879, 1, 1342177284, 1310735, 131073, 1342177280, 1376271, 131073, 1342177280, 1114127, 1, 1342177282, 1179663, 131073, 1342177280, 1245199, 65537, 1342177282, 720913, 196609, 805306372, 720914, 196609, 805306370, 720915, 196609, 805306368, 720916, 65537, 805306372, 720917, 327681, 805306370, 720918, 327681, 805306368, 720919, 196609, 805306368, 720920, 131073, 805306368, 720921, 131073, 805306372, 720922, 327681, 805306368, 720923, 327681, 805306370, 720924, 327681, 805306368, 720925, 131073, 805306370, 720926, 262145, 805306372, 720927, 65537, 805306372, 720928, 262145, 805306368, 720929, 196609, 805306368, 720930, 327681, 805306372, 720931, 1, 805306370, 852004, 327681, 1610612738, 917540, 327681, 1610612738, 983076, 1, 1610612738, 1048612, 1, 1610612738, 786468, 262145, 1610612736, 1048591, 262145, 1342177280, 983055, 196609, 1342177282, 917519, 1, 1342177282, 851983, 1, 1342177284, 786447, 196609, 1342177282, 720912, 262145, 805306370, 720932, 1, 1610612742, 720911, 1, 805306374)
[node name="CharacterBody2D" parent="." instance=ExtResource("1_wgp3w")] [node name="plr" parent="." instance=ExtResource("1_wgp3w")]
position = Vector2(266, 225) position = Vector2(266, 225)
moving = false moving = false

View File

@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://d3s7rw1f7fct7"]
[ext_resource type="Script" path="res://mouseparticle.gd" id="2_2bcct"]
[sub_resource type="Curve" id="Curve_meyv8"]
bake_resolution = 2
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[node name="GPUParticles2D" type="Line2D"]
process_priority = 2
process_physics_priority = 2
process_thread_group = 2
process_thread_group_order = 0
process_thread_messages = 3
width = 2.0
width_curve = SubResource("Curve_meyv8")
default_color = Color(0, 0, 0, 1)
joint_mode = 2
begin_cap_mode = 2
end_cap_mode = 2
script = ExtResource("2_2bcct")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://ceqnn4bkdnnkg"] [gd_scene load_steps=21 format=3 uid="uid://ceqnn4bkdnnkg"]
[ext_resource type="Script" path="res://scripts/plr.gd" id="1_37nf0"] [ext_resource type="Script" path="res://scripts/plr.gd" id="1_37nf0"]
[ext_resource type="Texture2D" uid="uid://cw5k2tw74rt44" path="res://assets/plr/face.png" id="1_kh4l2"] [ext_resource type="Texture2D" uid="uid://cw5k2tw74rt44" path="res://assets/plr/face.png" id="1_kh4l2"]
@ -7,8 +7,15 @@
[ext_resource type="Texture2D" uid="uid://e61exatotusn" path="res://assets/plr/torso.png" id="3_llt4k"] [ext_resource type="Texture2D" uid="uid://e61exatotusn" path="res://assets/plr/torso.png" id="3_llt4k"]
[ext_resource type="Texture2D" uid="uid://b2wwc74rumj6b" path="res://assets/textbox.png" id="5_ljw5m"] [ext_resource type="Texture2D" uid="uid://b2wwc74rumj6b" path="res://assets/textbox.png" id="5_ljw5m"]
[ext_resource type="Script" path="res://scripts/typewrite.gd" id="6_bjl34"] [ext_resource type="Script" path="res://scripts/typewrite.gd" id="6_bjl34"]
[ext_resource type="Texture2D" uid="uid://dw415r5q7gjav" path="res://assets/sheet02.png" id="6_c11rc"]
[ext_resource type="FontFile" uid="uid://dit6605nx68qb" path="res://assets/HackerBasic.ttf" id="6_m1vy8"] [ext_resource type="FontFile" uid="uid://dit6605nx68qb" path="res://assets/HackerBasic.ttf" id="6_m1vy8"]
[ext_resource type="Script" path="res://tscn/gun.gd" id="6_qq4o0"]
[ext_resource type="AudioStream" uid="uid://wc2udhbh21la" path="res://sfx/meow.wav" id="9_kn63i"] [ext_resource type="AudioStream" uid="uid://wc2udhbh21la" path="res://sfx/meow.wav" id="9_kn63i"]
[ext_resource type="Texture2D" uid="uid://3cpa43wrk5ih" path="res://assets/chores.png" id="10_relgi"]
[sub_resource type="AtlasTexture" id="AtlasTexture_2fw5x"]
atlas = ExtResource("6_c11rc")
region = Rect2(152, 35, 11, 8)
[sub_resource type="Animation" id="Animation_kxab8"] [sub_resource type="Animation" id="Animation_kxab8"]
length = 0.001 length = 0.001
@ -477,7 +484,7 @@ RichTextLabel/fonts/normal_font = ExtResource("6_m1vy8")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_171aa"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_171aa"]
size = Vector2(24, 15) size = Vector2(24, 15)
[node name="CharacterBody2D" type="CharacterBody2D"] [node name="plr" type="CharacterBody2D"]
script = ExtResource("1_37nf0") script = ExtResource("1_37nf0")
[node name="character" type="Node2D" parent="."] [node name="character" type="Node2D" parent="."]
@ -521,6 +528,15 @@ position = Vector2(-5, -4)
texture = ExtResource("1_kh4l2") texture = ExtResource("1_kh4l2")
centered = false centered = false
[node name="gun" type="Node2D" parent="."]
position = Vector2(-8, 28)
script = ExtResource("6_qq4o0")
[node name="Sprite2D" type="Sprite2D" parent="gun"]
position = Vector2(0, -3)
rotation = -1.57079
texture = SubResource("AtlasTexture_2fw5x")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": SubResource("AnimationLibrary_8tlfi") "": SubResource("AnimationLibrary_8tlfi")
@ -561,7 +577,71 @@ stream = ExtResource("9_kn63i")
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(-1, -1) position = Vector2(-1, -1)
position_smoothing_enabled = true
drag_horizontal_enabled = true
drag_vertical_enabled = true
drag_left_margin = 0.3
drag_top_margin = 0.3
drag_right_margin = 0.3
drag_bottom_margin = 0.3
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(-2, 28.5) position = Vector2(-2, 28.5)
shape = SubResource("RectangleShape2D_171aa") shape = SubResource("RectangleShape2D_171aa")
[node name="chores" type="CanvasLayer" parent="."]
[node name="Sprite2D2" type="Sprite2D" parent="chores"]
visible = false
position = Vector2(519, 70)
texture = ExtResource("10_relgi")
[node name="RichTextLabel2" type="RichTextLabel" parent="chores/Sprite2D2"]
modulate = Color(1, 1, 1, 0.407843)
clip_contents = false
offset_left = -43.0
offset_top = -34.0
offset_right = 49.0
offset_bottom = 58.0
theme = SubResource("Theme_lpkn8")
theme_override_font_sizes/normal_font_size = 22
text = "Buy fish
talk to friends
Do homework
thanks.
-you"
scroll_active = false
[node name="1" type="ColorRect" parent="chores/Sprite2D2"]
visible = false
offset_left = -45.0
offset_top = -23.0
offset_right = 7.0
offset_bottom = -21.0
color = Color(0.52549, 0.52549, 0.52549, 1)
[node name="2" type="ColorRect" parent="chores/Sprite2D2"]
visible = false
offset_left = -44.0
offset_top = -5.0
offset_right = 47.0
offset_bottom = -3.0
color = Color(0.52549, 0.52549, 0.52549, 1)
[node name="3" type="ColorRect" parent="chores/Sprite2D2"]
visible = false
offset_left = -45.0
offset_top = 13.0
offset_right = 32.0
offset_bottom = 15.0
color = Color(0.52549, 0.52549, 0.52549, 1)
[node name="cooldown" type="Timer" parent="."]
wait_time = 0.6
one_shot = true
[connection signal="timeout" from="cooldown" to="." method="_on_cooldown_timeout"]