Added existing project files

main
Yan Wittmann 2024-10-17 14:37:17 +02:00
parent 9fa39ccda7
commit 0ccd03debe
75 changed files with 2384 additions and 0 deletions

View File

@ -0,0 +1,20 @@
[gd_scene load_steps=4 format=3 uid="uid://dm5jrnxmxnuof"]
[ext_resource type="Texture2D" uid="uid://dv6rx85s1gy3i" path="res://assets/ballBlue_10.png" id="1"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ehj7a"]
bounce = 0.5
[sub_resource type="CircleShape2D" id="2"]
radius = 37.1452
[node name="Ball" type="RigidBody2D"]
physics_material_override = SubResource("PhysicsMaterial_ehj7a")
gravity_scale = 10.0
[node name="Sprite2D" type="Sprite2D" parent="."]
scale = Vector2(0.5, 0.5)
texture = ExtResource("1")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("2")

View File

@ -0,0 +1,9 @@
extends Node
@export var Ball: PackedScene
func _input(event):
if event.is_action_pressed("click"):
var new_ball = Ball.instantiate()
new_ball.position = get_viewport().get_mouse_position()
add_child(new_ball)

View File

@ -0,0 +1,151 @@
[gd_scene load_steps=13 format=3 uid="uid://bc04jgq832nvc"]
[ext_resource type="Script" path="res://Main.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://dm5jrnxmxnuof" path="res://Ball.tscn" id="2"]
[ext_resource type="Texture2D" uid="uid://dkq1swbmmxmbq" path="res://assets/Bouncy Platform Long.png" id="3"]
[sub_resource type="PhysicsMaterial" id="1"]
bounce = 0.5
[sub_resource type="CapsuleShape2D" id="2"]
radius = 28.7617
height = 309.37
[sub_resource type="PhysicsMaterial" id="3"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="4"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="5"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="6"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="7"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="8"]
bounce = 0.5
[sub_resource type="PhysicsMaterial" id="9"]
bounce = 0.5
[node name="Main" type="Node"]
script = ExtResource("1")
Ball = ExtResource("2")
[node name="WallContainer" type="Node" parent="."]
[node name="Wall2" type="StaticBody2D" parent="WallContainer"]
position = Vector2(880.952, 495.157)
rotation = -0.264907
physics_material_override = SubResource("1")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall2"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall2"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall7" type="StaticBody2D" parent="WallContainer"]
position = Vector2(462.444, 216.865)
rotation = -1.02983
physics_material_override = SubResource("3")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall7"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall7"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall8" type="StaticBody2D" parent="WallContainer"]
position = Vector2(585.534, 221.147)
rotation = 1.07416
physics_material_override = SubResource("4")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall8"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall8"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall8" type="StaticBody2D" parent="WallContainer/Wall8"]
position = Vector2(-351.915, 334.235)
rotation = 1.07416
physics_material_override = SubResource("4")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall8/Wall8"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall8/Wall8"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall4" type="StaticBody2D" parent="WallContainer"]
position = Vector2(996.874, 342.897)
rotation = -1.5708
physics_material_override = SubResource("5")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall4"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall4"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall1" type="StaticBody2D" parent="WallContainer"]
position = Vector2(148.047, 491.522)
rotation = 0.315662
physics_material_override = SubResource("6")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall1"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall1"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall5" type="StaticBody2D" parent="WallContainer"]
position = Vector2(30.2087, 337.685)
rotation = 1.5708
physics_material_override = SubResource("7")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall5"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall5"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall3" type="StaticBody2D" parent="WallContainer"]
position = Vector2(397.133, 570.384)
physics_material_override = SubResource("8")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall3"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall3"]
rotation = 1.5708
shape = SubResource("2")
[node name="Wall6" type="StaticBody2D" parent="WallContainer"]
position = Vector2(699.667, 571.226)
physics_material_override = SubResource("9")
[node name="Sprite2D" type="Sprite2D" parent="WallContainer/Wall6"]
texture = ExtResource("3")
[node name="CollisionShape2D" type="CollisionShape2D" parent="WallContainer/Wall6"]
rotation = 1.5708
shape = SubResource("2")
[node name="Ball" parent="." instance=ExtResource("2")]
position = Vector2(427, 95)
[node name="Ball2" parent="." instance=ExtResource("2")]
position = Vector2(336, 115)

View File

@ -0,0 +1,5 @@
# Instancing project starter
Used by the "Step by step" tutorial:
https://docs.godotengine.org/en/latest/getting_started/step_by_step/index.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

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

View File

@ -0,0 +1 @@
<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><g transform="translate(32 32)"><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99z" fill="#363d52"/><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99zm0 4h96c6.64 0 12 5.35 12 11.99v95.98c0 6.64-5.35 11.99-12 11.99h-96c-6.64 0-12-5.35-12-11.99v-95.98c0-6.64 5.36-11.99 12-11.99z" fill-opacity=".4"/></g><g stroke-width="9.92746" transform="matrix(.10073078 0 0 .10073078 12.425923 2.256365)"><path d="m0 0s-.325 1.994-.515 1.976l-36.182-3.491c-2.879-.278-5.115-2.574-5.317-5.459l-.994-14.247-27.992-1.997-1.904 12.912c-.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-.994 14.247c-.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-.187.018-.324-1.978-.511-1.978l-.049-7.83 30.658-4.944 1.004-14.374c.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c.146-.01.29-.016.434-.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c.423-2.871 2.93-5.037 5.831-5.037.142 0 .284.005.423.015l38.556 2.75c2.911.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 919.24059 771.67186)"/><path d="m0 0v-47.514-6.035-5.492c.108-.001.216-.005.323-.015l36.196-3.49c1.896-.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c.107.01.214.014.322.015v4.711l.015.005v54.325c5.09692 6.4164715 9.92323 13.494208 13.621 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842.642-7.702.88-11.567.926v.006c-.027 0-.052-.006-.075-.006-.024 0-.049.006-.073.006v-.006c-3.872-.046-7.729-.284-11.572-.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17.216-8.34.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.4426579-6.973692 9.2079702-13.9828876 13.621-19.449z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 104.69892 525.90697)"/><path d="m0 0-1.121-16.063c-.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-.094-.007-.188-.01-.281-.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c.015-3.498.06-7.33.06-8.093 0-34.374 43.605-50.896 97.781-51.086h.066.067c54.176.19 97.766 16.712 97.766 51.086 0 .777.047 4.593.063 8.093z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 784.07144 817.24284)"/><path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 389.21484 625.67104)"/><path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 367.36686 631.05679)"/><path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 511.99336 724.73954)"/><path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 634.78706 625.67104)"/><path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 656.64056 631.05679)"/></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dlj0lug17ph0p"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,45 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="instancing"
run/main_scene="res://Main.tscn"
config/features=PackedStringArray("4.3")
config/icon="res://icon.svg"
[importer_defaults]
texture={
"compress/hdr_mode": 0,
"compress/lossy_quality": 0.7,
"compress/mode": 0,
"compress/normal_map": 0,
"detect_3d": true,
"flags/anisotropic": false,
"flags/filter": false,
"flags/mipmaps": false,
"flags/repeat": 0,
"flags/srgb": 2,
"process/HDR_as_SRGB": false,
"process/fix_alpha_border": true,
"process/premult_alpha": false,
"size_limit": 0,
"stream": false,
"svg/scale": 1.0
}
[input]
click={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}

View File

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

3
my-first-project/.gitignore vendored 100644
View File

@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 994 B

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c6v86v04wkr45"
path="res://.godot/imported/icon.svg-4fb04d907557270e983a13dd9087d07b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon_test/icon.svg"
dest_files=["res://.godot/imported/icon.svg-4fb04d907557270e983a13dd9087d07b.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
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,56 @@
extends Sprite2D
signal health_changed(old_value, new_value)
signal health_depleted
var speed: int = 40
var max_speed: int = 500
var angular_speed: float = PI * 0.15
var motion: Vector2 = Vector2()
var angular_motion: float = 0
var react_to_input: bool = true
var health: int = 100
func _ready() -> void:
var timer: Timer = get_node("Timer")
timer.timeout.connect(_on_timer_timeout)
func _on_timer_timeout() -> void:
modulate.a = 1 if modulate.a == 0.5 else 0.5
func _process(delta: float) -> void:
angular_motion = signf(angular_motion) * abs(angular_motion) * 0.9
motion = motion * 0.9
if react_to_input:
var direction: float = 0
if Input.is_action_pressed("ui_left"):
direction -= 1
if Input.is_action_pressed("ui_right"):
direction += 1
angular_motion += angular_speed * direction * delta
if Input.is_action_pressed("ui_up"):
var velocity: Vector2 = Vector2.UP.rotated(rotation) * speed
motion += velocity * delta
if Input.is_action_pressed("ui_down"):
var velocity: Vector2 = Vector2.DOWN.rotated(rotation) * speed
motion += velocity * delta
if motion.length() > max_speed:
motion = motion.normalized() * max_speed
rotation += angular_motion
position += motion
func _on_button_pressed() -> void:
react_to_input = not react_to_input
var new_health: int = health - 10
health_changed.emit(health, new_health)
health = new_health
if health <= 0:
health_depleted.emit()
queue_free()

View File

@ -0,0 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://blig1lf8unayu"]
[ext_resource type="Texture2D" uid="uid://c6v86v04wkr45" path="res://icon_test/icon.svg" id="1_vtio7"]
[ext_resource type="Script" path="res://icon_test/icon_script.gd" id="2_wc458"]
[node name="Sprite2D" type="Sprite2D"]
position = Vector2(562, 266)
texture = ExtResource("1_vtio7")
script = ExtResource("2_wc458")

View File

@ -0,0 +1,20 @@
[gd_scene load_steps=2 format=3 uid="uid://daea00yor4kbu"]
[ext_resource type="PackedScene" uid="uid://blig1lf8unayu" path="res://icon_test/sprite_2d.tscn" id="1_yqsq6"]
[node name="Node2D" type="Node2D"]
[node name="Sprite2D" parent="." instance=ExtResource("1_yqsq6")]
[node name="Timer" type="Timer" parent="Sprite2D"]
wait_time = 0.5
autostart = true
[node name="Button" type="Button" parent="."]
offset_left = 748.0
offset_top = 524.0
offset_right = 1094.0
offset_bottom = 600.0
text = "Click me to get free VBucks"
[connection signal="pressed" from="Button" to="Sprite2D" method="_on_button_pressed"]

View File

@ -0,0 +1,16 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="my-first-project"
run/main_scene="res://main_scene.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon_test/icon.svg"

2
tutorial-game/.gitattributes vendored 100644
View File

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

3
tutorial-game/.gitignore vendored 100644
View File

@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dn8pr56ynvupw"
path="res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr"
[deps]
source_file="res://art/House In a Forest Loop.ogg"
dest_files=["res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

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

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ceqgou1w6cvld"
path="res://.godot/imported/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample"
[deps]
source_file="res://art/gameover.wav"
dest_files=["res://.godot/imported/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

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

View File

@ -0,0 +1,253 @@
Please distribute this file along with the Xolonium fonts when possible.
Source
Find the sourcefiles of Xolonium at
<gitlab.com/sev/xolonium>
Credits
Xolonium is created with FontForge <fontforge.org>,
Inkscape <inkscape.org>, Python <python.org>, and
FontTools <github.com/fonttools>.
It originated as a custom font for the open-source
game Xonotic <xonotic.org>. With many thanks to the
Xonotic community for your support.
Supported OpenType features
case Provides case sensitive placement of punctuation,
brackets, and math symbols for uppercase text.
frac Replaces number/number sequences with diagonal fractions.
Numbers that touch a slash should not exceed 10 digits.
kern Provides kerning for Latin, Greek, and Cyrillic scripts.
locl Dutch: Replaces j with a stressed version if it follows í.
Sami: Replaces n-form Eng with the preferred N-form version.
Romanian and Moldovan: Replaces ŞşŢţ with the preferred ȘșȚț.
pnum Replaces monospaced digits with proportional versions.
sinf Replaces digits with scientific inferiors below the baseline.
subs Replaces digits with subscript versions on the baseline.
sups Replaces digits with superscript versions.
zero Replaces zero with a slashed version.
Supported glyph sets
Adobe Latin 3
OpenType W1G
ISO 8859-1 Western European
ISO 8859-2 Central European
ISO 8859-3 South European
ISO 8859-4 North European
ISO 8859-5 Cyrillic
ISO 8859-7 Greek
ISO 8859-9 Turkish
ISO 8859-10 Nordic
ISO 8859-13 Baltic Rim
ISO 8859-14 Celtic
ISO 8859-15 Western European
ISO 8859-16 South-Eastern European
Available glyphs
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
 ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ
ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľ
ĿŀŁłŃńŅņŇňŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş
ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž
ƒǺǻǼǽǾǿȘșȚțȷ
ˆˇˉ˘˙˚˛˜˝
ͺ;΄΅Ά·ΈΉΊΌΎΏΐ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ
αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ
ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП
РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп
рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ
ѢѣѲѳѴѵҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩ
ҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽӀӁӂӇӈӋӌӏӐӑӒӓ
ӔӕӖӗӘәӜӝӞӟӠӡӢӣӤӥӦӧӨөӮӯӰӱӲӳӴӵӶӷӸӹ
Ԥԥ
ḂḃḊḋḞḟṀṁṖṗṠṡṪṫẀẁẂẃẄẅẞỲỳ
     ‒–—―‘’‚‛“”„‟†‡•…‰′″‹›‽‾⁄
⁰⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
₤₦₩₫€₯₱₹₺₽₿
℅ℓ№℗™Ω℮
⅛⅜⅝⅞
←↑→↓
∂∆∏∑−∕∙√∞∟∫≈≠≤≥
■▬▮▰▲▶▼◀◆◊●◢◣◤◥
☄★☠☢☣⚙⚛⚠⚡⛔
❇❈❌❤❰❱❲❳
fffiflffiffl
🌌🌍🌎🌏👽💣🔥🔫
😁😃😄😆😇😈😉😊😎😐😒😕😘
😛😝😞😟😠😣😭😮😲😴😵
🚀
Debugging glyphs
 U+EFFD Font version
 U+F000 Font hinting indicator
Changelog
Xolonium 4.1 2016-11-22 Severin Meyer <sev.ch@web.de>
Reverted frac OpenType feature to a more stable implementation
Xolonium 4.0 2016-10-08 Severin Meyer <sev.ch@web.de>
Decreased width of most glyphs
Thinner vertical stems in Xolonium-Regular
Thicker horizontal stems in Xolonium-Bold
Revised diagonal stems
Lowered middle bars
Revised diacritical bars
Added glyphs:
ӏẞ₿
U+2007 U+2008 U+2009 U+200A U+202F
U+EFFD U+F000
Revised glyphs:
$&,JKQRXkwxy~¢¤ßǻ˜ζκλμξφЖУжћѴѵ∕₱₺₦₩€ℓ№≈ffffiffl
❤🌍🌎🌏😁😄😇😈😉😊😘😭😮😴🚀
Removed uncommon glyphs:
ʼnſʼҌҍҎҏҾҿӃӄӇӈӚӛӪӫӬӭ
U+0312 U+0313 U+0326
Simplified OpenType features pnum, zero, and case
Removed OpenType feature dlig
Revised vertical metrics
Merged outlines of composite glyphs in otf version
Added ttf version with custom outlines and instructions
Added woff and woff2 version
Xolonium 3.1 2015-06-10 Severin Meyer <sev.ch@web.de>
Added currency glyphs:
₦₩₫₱₹₺₽
Revised glyph:
Relicensed public release under the SIL Open Font License 1.1
Xolonium 3.0 2015-05-04 Severin Meyer <sev.ch@web.de>
Decreased width of glyphs
Decreased descender height
Increased height of super/subscript glyphs
Revised width of dashes, underscore, and overscore
Sharper bends with more circular proportions
Decreased stroke thickness of mathematical glyphs
Revised diacritical marks
Revised diacritical bars
Revised Cyrillic hooks
Revised glyphs:
GQRYjmuwßŊŒſƒǻfffiffiffl
ΞΨΩδζιξπςστυφω
ЉЄДЛУЭЯбдлэяєљђєћѢѣҨҩҼҽӃӄӘә
#$&'()*,/69?@[]{}~¡£¤¥§©®¿
‹›₤€₯ℓ№℗℮←↑→↓∂∏∑∞≈▰☄❈❰❱❲❳😝
Raised vertical position of mathematical glyphs
Unified advance width of numeral and monetary glyphs
Unified advance width of mathematical glyphs
Revised bearings
Rewrote kern feature
Bolder Xolonium-Bold with improved proportions
Updated glyph names to conform to the AGLFN 1.7
Revised hints and PS Private Dictionary
Added glyphs:
ӶӷԤԥ
Added OpenType features:
case frac liga locl pnum sinf subs sups zero
Xolonium 2.4 2014-12-23 Severin Meyer <sev.ch@web.de>
Added dingbats:
⛔💣🔥
Revised size and design of emoticons
Revised dingbats:
⌖☄☠☣⚙⚛⚠⚡❇❈🌌🌍🌎🌏🔫
Removed dingbat:
💥
Xolonium 2.3 2014-08-14 Severin Meyer <sev.ch@web.de>
Bugfixed ε and έ, thanks to bowzee for the feedback
Xolonium 2.2 2014-03-01 Severin Meyer <sev.ch@web.de>
Added dingbats:
⌖◆●❌💥
Revised dingbats:
•←↑→↓◊☄★☠☣⚙⚛⚠⚡❇❈❤🌌🌍🌎🌏👽🔫🚀
Removed dingbats:
♻✪💡📡🔋🔧🔭
Xolonium 2.1 2013-10-20 Severin Meyer <sev.ch@web.de>
Added dingbats:
←↑→↓❰❱❲❳■▬▮▰▲▶▼◀◢◣◤◥
☄★☠☢☣♻⚙⚛⚠⚡✪❇❈❤
🌌🌍🌎🌏👽💡📡🔋🔧🔫🔭🚀
😁😃😄😆😇😈😉😊😎😐😒😕
😘😛😝😞😟😠😣😭😮😲😴😵
Xolonium 2.0.1 2013-07-12 Severin Meyer <sev.ch@web.de>
Reorganised and simplified files
Xolonium 2.0 2012-08-11 Severin Meyer <sev.ch@web.de>
Revised bends
Revised thickness of uppercase diagonal stems
Revised diacritical marks
Revised hints and PS Private Dictionary
Revised glyphs:
*1469@DPRly{}§©®¶ÐÞƒΘΞαεζνξνυЄЉЊ
ЏБЗЛУЧЪЫЬЭЯбзлчъыьэяєљњџ•€∂∙√∞∫≠
Completed glyph sets:
Adobe Latin 3
OpenType World Glyph Set 1 (W1G)
Ghostscript Standard (ghostscript-fonts-std-8.11)
Added OpenType kern feature
Added Xolonium-Bold
Xolonium 1.2 2011-02-12 Severin Meyer <sev.ch@web.de>
Revised glyphs:
D·Ðı
Completed glyph sets:
ISO 8859-7 (Greek)
Unicode Latin Extended-A block
Added glyphs:
†‡•…‰⁄™∂∑−√∞≠≤≥
Xolonium 1.1 2011-01-17 Severin Meyer <sev.ch@web.de>
Revised placement of cedilla and ogonek in accented glyphs
Revised glyphs:
,;DKTjkvwxy¥§Ð˛
Completed glyph sets:
ISO 8859-2 (Central European)
ISO 8859-3 (South European, Esperanto)
ISO 8859-4 (North European)
ISO 8859-5 (Cyrillic)
ISO 8859-9 (Turkish)
ISO 8859-10 (Nordic)
ISO 8859-13 (Baltic Rim)
ISO 8859-14 (Celtic)
ISO 8859-16 (South-Eastern European)
Added glyphs:
ȷʼ̒ ЀЍѐѝ‒–—‘’‚‛“”„‟‹›
Xolonium 1.0 2011-01-04 Severin Meyer <sev.ch@web.de>
Completed glyph sets:
ISO 8859-1 (Western European)
ISO 8859-15 (Western European)
Added glyphs:
ĄĆĘŁŃŚŹŻąćęłńśźżıˆˇ˙˚˛˜

View File

@ -0,0 +1,94 @@
Copyright 2011-2016 Severin Meyer <sev.ch@web.de>,
with Reserved Font Name Xolonium.
This Font Software is licensed under the SIL Open Font License,
Version 1.1. This license is copied below, and is also available
with a FAQ at <http://scripts.sil.org/OFL>
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://dcbt7bfqcw4qq"
path="res://.godot/imported/Xolonium-Regular.ttf-bc2981e3069cff4c34dd7c8e2bb73fba.fontdata"
[deps]
source_file="res://fonts/Xolonium-Regular.ttf"
dest_files=["res://.godot/imported/Xolonium-Regular.ttf-bc2981e3069cff4c34dd7c8e2bb73fba.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 994 B

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bty8n6l6gmmk8"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,63 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="tutorial-game"
run/main_scene="res://scenes/main.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon.svg"
[display]
window/size/viewport_width=480
window/size/viewport_height=720
window/stretch/mode="canvas_items"
[input]
move_right={
"deadzone": 0.5,
"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
]
}
move_left={
"deadzone": 0.5,
"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
]
}
move_up={
"deadzone": 0.5,
"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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
]
}
move_down={
"deadzone": 0.5,
"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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
]
}
start_game={
"deadzone": 0.5,
"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":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
]
}

View File

@ -0,0 +1,33 @@
extends CanvasLayer
signal start_game
var score: int = 0
func show_timeout_message(text: String) -> void:
$Message.text = text
$Message.show()
$MessageTimer.start()
func show_game_over():
show_timeout_message("Game Over")
await $MessageTimer.timeout
$Message.text = "Dodge the Mobs!"
$Message.show()
# Make a one-shot timer and wait for it to finish.
await get_tree().create_timer(1.0).timeout
$StartButton.show()
func update_score(score):
$ScoreLabel.text = str(score)
func _on_start_button_pressed():
$StartButton.hide()
start_game.emit()
func _on_message_timer_timeout():
$Message.hide()

View File

@ -0,0 +1,68 @@
[gd_scene load_steps=5 format=3 uid="uid://d22yt81uknksv"]
[ext_resource type="Script" path="res://scenes/HUD/hud.gd" id="1_2cj2s"]
[ext_resource type="FontFile" uid="uid://dcbt7bfqcw4qq" path="res://fonts/Xolonium-Regular.ttf" id="1_f2ns1"]
[sub_resource type="InputEventAction" id="InputEventAction_y4w8n"]
action = &"start_game"
[sub_resource type="Shortcut" id="Shortcut_f88su"]
events = [SubResource("InputEventAction_y4w8n")]
[node name="HUD" type="CanvasLayer"]
script = ExtResource("1_2cj2s")
[node name="ScoreLabel" type="Label" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -189.5
offset_top = 29.97
offset_right = 189.5
offset_bottom = 107.97
grow_horizontal = 2
size_flags_horizontal = 4
theme_override_fonts/font = ExtResource("1_f2ns1")
theme_override_font_sizes/font_size = 64
text = "0"
horizontal_alignment = 1
[node name="Message" type="Label" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -174.5
offset_top = -79.5
offset_right = 174.5
offset_bottom = 79.5
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
theme_override_fonts/font = ExtResource("1_f2ns1")
theme_override_font_sizes/font_size = 64
horizontal_alignment = 1
autowrap_mode = 2
[node name="StartButton" type="Button" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -90.0
offset_top = -140.0
offset_right = 90.0
offset_bottom = -82.0
grow_horizontal = 2
grow_vertical = 0
shortcut = SubResource("Shortcut_f88su")
text = "Start Game"
[node name="MessageTimer" type="Timer" parent="."]
wait_time = 2.0
one_shot = true
[connection signal="pressed" from="StartButton" to="." method="_on_start_button_pressed"]
[connection signal="timeout" from="MessageTimer" to="." method="_on_message_timer_timeout"]

View File

@ -0,0 +1,74 @@
extends Node2D
@export var mob_scene: PackedScene
var score: int = 0
func _ready() -> void:
$Player.hide()
func _process(delta: float) -> void:
pass
func _on_game_start_timer_timeout() -> void:
$ScoreIncrementTimer.start()
$MobSpawnTimer.start()
func new_game():
score = 0
$HUD.update_score(score)
$HUD.show_timeout_message("Get Ready")
$Music.play()
$Player.start($PlayerStartPosition.position)
$GameStartTimer.start()
func game_over():
$Music.stop()
$DeathSound.play()
$ScoreIncrementTimer.stop()
$MobSpawnTimer.stop()
$Player.disable()
$HUD.show_game_over()
get_tree().call_group("mobs", "dissolve")
func _on_player_hit() -> void:
game_over()
func _on_mob_spawn_timer_timeout() -> void:
$Path2D/MobSpawnLocation.progress_ratio = randf()
var mob: RigidBody2D = mob_scene.instantiate()
mob.position = $Path2D/MobSpawnLocation.position
mob.rotation = $Path2D/MobSpawnLocation.rotation + PI / 2
mob.rotation += randf_range(-PI / 4, PI / 4)
# ensure the mob spawns off screen
mob.position += Vector2(-100, 0).rotated(mob.rotation)
var velocity: Vector2 = Vector2(randf_range(150.0, 250.0), 0.0)
mob.linear_velocity = velocity.rotated(mob.rotation)
add_child(mob)
func _on_score_increment_timer_timeout() -> void:
score += 1
$HUD.update_score(score)
func _on_hud_start_game() -> void:
new_game()

View File

@ -0,0 +1,64 @@
[gd_scene load_steps=9 format=3 uid="uid://lnu6rbfrobcj"]
[ext_resource type="Script" path="res://scenes/main.gd" id="1_5ln4w"]
[ext_resource type="PackedScene" uid="uid://b67uwwuoqaj8k" path="res://scenes/player/player.tscn" id="2_4emuo"]
[ext_resource type="PackedScene" uid="uid://dft0l6kiatv8r" path="res://scenes/mob/mob.tscn" id="3_cb8gr"]
[ext_resource type="PackedScene" uid="uid://d22yt81uknksv" path="res://scenes/HUD/hud.tscn" id="4_7sfdk"]
[ext_resource type="AudioStream" uid="uid://dn8pr56ynvupw" path="res://art/House In a Forest Loop.ogg" id="5_uatno"]
[ext_resource type="AudioStream" uid="uid://ceqgou1w6cvld" path="res://art/gameover.wav" id="6_4k0ar"]
[ext_resource type="PackedScene" uid="uid://dllre5tl0hejs" path="res://scenes/particle/wind_trail.tscn" id="7_3ydc3"]
[sub_resource type="Curve2D" id="Curve2D_tqiio"]
_data = {
"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 480, 720, 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0)
}
point_count = 5
[node name="Node2D" type="Node2D"]
script = ExtResource("1_5ln4w")
mob_scene = ExtResource("3_cb8gr")
[node name="ColorRect" type="ColorRect" parent="."]
z_index = -2
offset_right = 480.0
offset_bottom = 720.0
color = Color(0.524642, 0.597468, 0.684174, 1)
[node name="Player" parent="." instance=ExtResource("2_4emuo")]
[node name="PlayerStartPosition" type="Marker2D" parent="."]
position = Vector2(240, 450)
[node name="MobSpawnTimer" type="Timer" parent="."]
wait_time = 0.5
[node name="ScoreIncrementTimer" type="Timer" parent="."]
[node name="GameStartTimer" type="Timer" parent="."]
wait_time = 2.0
one_shot = true
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_tqiio")
[node name="MobSpawnLocation" type="PathFollow2D" parent="Path2D"]
[node name="HUD" parent="." instance=ExtResource("4_7sfdk")]
[node name="Music" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("5_uatno")
volume_db = -5.622
parameters/looping = true
[node name="DeathSound" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("6_4k0ar")
[node name="WindTrail" parent="." instance=ExtResource("7_3ydc3")]
position = Vector2(-503, 360)
visibility_rect = Rect2(-1000, -1000, 2000, 2000)
[connection signal="hit" from="Player" to="." method="_on_player_hit"]
[connection signal="timeout" from="MobSpawnTimer" to="." method="_on_mob_spawn_timer_timeout"]
[connection signal="timeout" from="ScoreIncrementTimer" to="." method="_on_score_increment_timer_timeout"]
[connection signal="timeout" from="GameStartTimer" to="." method="_on_game_start_timer_timeout"]
[connection signal="start_game" from="HUD" to="." method="_on_hud_start_game"]

View File

@ -0,0 +1,10 @@
shader_type canvas_item;
uniform vec4 blink_color: source_color;
uniform float blink_intensity = 0;
void fragment() {
vec4 color = texture(TEXTURE, UV);
color = mix(color, blink_color, blink_intensity * color.a);
COLOR = color;
}

View File

@ -0,0 +1,212 @@
[gd_resource type="VisualShader" load_steps=17 format=3 uid="uid://ddqioqbov85a2"]
[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_6xgmc"]
output_port_for_preview = 0
[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_ledym"]
output_port_for_preview = 0
default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)]
op_type = 3
[sub_resource type="VisualShaderNodeColorConstant" id="VisualShaderNodeColorConstant_mlnkv"]
constant = Color(0.960814, 0.604173, 0.390603, 1)
[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_aol56"]
default_input_values = [0, 0.0, 1, 0.07]
operator = 1
[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_n1s11"]
output_port_for_preview = 0
[sub_resource type="VisualShaderNodeRemap" id="VisualShaderNodeRemap_x7l5e"]
default_input_values = [1, 0.0, 2, 1.0, 3, 0.0, 4, 1.07]
[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_0qr2v"]
default_input_values = [0, 0.0, 1, 1.0]
[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_7noaw"]
output_port_for_preview = 0
parameter_name = "DissolveEffectWidth"
hint = 1
max = 0.2
default_value_enabled = true
default_value = 0.08
[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_nfnwc"]
parameter_name = "Noise"
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_8olli"]
output_port_for_preview = 0
source = 5
[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_vaaem"]
output_port_for_preview = 0
[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_kg0xq"]
[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_tslfp"]
constant = 1.0
[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_bvbxm"]
output_port_for_preview = 0
parameter_name = "DissolveValue"
hint = 1
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_v6qcn"]
input_name = "texture"
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_u8gkl"]
expanded_output_ports = [0]
source = 5
[resource]
code = "shader_type canvas_item;
render_mode blend_mix;
uniform sampler2D Noise;
uniform float DissolveValue : hint_range(0, 1);
uniform float DissolveEffectWidth : hint_range(0, 0.20000000298023) = 0.07999999821186;
void fragment() {
// ColorConstant:12
vec4 n_out12p0 = vec4(0.960814, 0.604173, 0.390603, 1.000000);
vec4 n_out9p0;
// Texture2D:9
n_out9p0 = texture(TEXTURE, UV);
float n_out9p4 = n_out9p0.a;
vec4 n_out3p0;
// Texture2D:3
n_out3p0 = texture(Noise, UV);
// FloatParameter:7
float n_out7p0 = DissolveValue;
// FloatParameter:18
float n_out18p0 = DissolveEffectWidth;
// FloatOp:17
float n_in17p1 = 1.00000;
float n_out17p0 = n_out18p0 + n_in17p1;
float n_out15p0;
// Remap:15
float n_in15p1 = 0.00000;
float n_in15p2 = 1.00000;
float n_in15p3 = 0.00000;
{
float __input_range = n_in15p2 - n_in15p1;
float __output_range = n_out17p0 - n_in15p3;
n_out15p0 = n_in15p3 + __output_range * ((n_out7p0 - n_in15p1) / __input_range);
}
// FloatOp:13
float n_out13p0 = n_out15p0 - n_out18p0;
// FloatConstant:5
float n_out5p0 = 0.000000;
// FloatConstant:6
float n_out6p0 = 1.000000;
vec3 n_out14p0;
// If:14
float n_in14p2 = 0.00001;
vec3 n_in14p3 = vec3(0.00000, 0.00000, 0.00000);
if(abs(n_out3p0.x - n_out13p0) < n_in14p2)
{
n_out14p0 = n_in14p3;
}
else if(n_out3p0.x < n_out13p0)
{
n_out14p0 = vec3(n_out6p0);
}
else
{
n_out14p0 = vec3(n_out5p0);
}
// Mix:11
vec3 n_out11p0 = mix(vec3(n_out12p0.xyz), vec3(n_out9p0.xyz), n_out14p0);
vec3 n_out4p0;
// If:4
float n_in4p2 = 0.00001;
vec3 n_in4p3 = vec3(0.00000, 0.00000, 0.00000);
if(abs(n_out3p0.x - n_out7p0) < n_in4p2)
{
n_out4p0 = n_in4p3;
}
else if(n_out3p0.x < n_out7p0)
{
n_out4p0 = vec3(n_out6p0);
}
else
{
n_out4p0 = vec3(n_out5p0);
}
// Mix:10
float n_in10p0 = 0.00000;
float n_out10p0 = mix(n_in10p0, n_out9p4, n_out4p0.x);
// Output:0
COLOR.rgb = n_out11p0;
COLOR.a = n_out10p0;
}
"
mode = 1
flags/light_only = false
nodes/fragment/0/position = Vector2(1160, -80)
nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_nfnwc")
nodes/fragment/2/position = Vector2(-1260, 120)
nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_8olli")
nodes/fragment/3/position = Vector2(-880, 140)
nodes/fragment/4/node = SubResource("VisualShaderNodeIf_vaaem")
nodes/fragment/4/position = Vector2(80, 380)
nodes/fragment/5/node = SubResource("VisualShaderNodeFloatConstant_kg0xq")
nodes/fragment/5/position = Vector2(-540, 700)
nodes/fragment/6/node = SubResource("VisualShaderNodeFloatConstant_tslfp")
nodes/fragment/6/position = Vector2(-540, 800)
nodes/fragment/7/node = SubResource("VisualShaderNodeFloatParameter_bvbxm")
nodes/fragment/7/position = Vector2(-1300, 740)
nodes/fragment/8/node = SubResource("VisualShaderNodeInput_v6qcn")
nodes/fragment/8/position = Vector2(-680, -320)
nodes/fragment/9/node = SubResource("VisualShaderNodeTexture_u8gkl")
nodes/fragment/9/position = Vector2(-360, -420)
nodes/fragment/10/node = SubResource("VisualShaderNodeMix_6xgmc")
nodes/fragment/10/position = Vector2(800, -60)
nodes/fragment/11/node = SubResource("VisualShaderNodeMix_ledym")
nodes/fragment/11/position = Vector2(800, -440)
nodes/fragment/12/node = SubResource("VisualShaderNodeColorConstant_mlnkv")
nodes/fragment/12/position = Vector2(560, -460)
nodes/fragment/13/node = SubResource("VisualShaderNodeFloatOp_aol56")
nodes/fragment/13/position = Vector2(-600, 420)
nodes/fragment/14/node = SubResource("VisualShaderNodeIf_n1s11")
nodes/fragment/14/position = Vector2(80, -60)
nodes/fragment/15/node = SubResource("VisualShaderNodeRemap_x7l5e")
nodes/fragment/15/position = Vector2(-960, 560)
nodes/fragment/17/node = SubResource("VisualShaderNodeFloatOp_0qr2v")
nodes/fragment/17/position = Vector2(-1220, 560)
nodes/fragment/18/node = SubResource("VisualShaderNodeFloatParameter_7noaw")
nodes/fragment/18/position = Vector2(-1720, 500)
nodes/fragment/connections = PackedInt32Array(2, 0, 3, 2, 3, 0, 4, 0, 5, 0, 4, 4, 6, 0, 4, 5, 8, 0, 9, 2, 4, 0, 10, 2, 10, 0, 0, 1, 9, 4, 10, 1, 9, 0, 11, 1, 12, 0, 11, 0, 11, 0, 0, 0, 3, 0, 14, 0, 13, 0, 14, 1, 5, 0, 14, 4, 6, 0, 14, 5, 14, 0, 11, 2, 7, 0, 15, 0, 15, 0, 13, 0, 7, 0, 4, 1, 17, 0, 15, 4, 18, 0, 13, 1, 18, 0, 17, 0)

View File

@ -0,0 +1,29 @@
[gd_scene load_steps=4 format=3 uid="uid://d0k2dheh1y3ff"]
[ext_resource type="Texture2D" uid="uid://c87nnwec6q1i1" path="res://art/particle_enemy_trail.png" id="1_u0ygt"]
[sub_resource type="Curve" id="Curve_r2a8g"]
_data = [Vector2(0, 0.620991), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Gradient" id="Gradient_uu82e"]
offsets = PackedFloat32Array(0, 0.808333, 1)
colors = PackedColorArray(1, 1, 1, 0.568627, 1, 1, 1, 0.788235, 1, 1, 1, 0)
[node name="CPUParticles2D" type="CPUParticles2D"]
amount = 5
lifetime = 0.7
explosiveness = 0.38
texture = ExtResource("1_u0ygt")
spread = 9.0
gravity = Vector2(0, 0)
initial_velocity_min = 182.78
initial_velocity_max = 207.98
radial_accel_max = 100.0
tangential_accel_min = -200.0
tangential_accel_max = 200.0
damping_min = 100.0
damping_max = 300.0
scale_amount_max = 1.5
scale_amount_curve = SubResource("Curve_r2a8g")
color_ramp = SubResource("Gradient_uu82e")

View File

@ -0,0 +1,40 @@
extends RigidBody2D
@export var blink_shader: Shader
@export var dissolve_shader: Shader
func _ready():
add_to_group("mobs")
var mob_types: PackedStringArray = $AnimatedSprite2D.sprite_frames.get_animation_names()
$AnimatedSprite2D.play(mob_types[randi() % mob_types.size()])
set_shader_dissolve_value(1.0)
func _process(delta: float) -> void:
var spread: int = 25
$TrailParticles.position.y = randi() % (spread * 2) - spread
func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
await get_tree().create_timer(1.0).timeout
queue_free()
func hit_player():
$DissolveParticles.restart()
$DissolveParticles.emitting = true
func dissolve():
$AnimatedSprite2D.material.shader = blink_shader
var tween_1: Tween = get_tree().create_tween()
tween_1.tween_method(set_shader_blink_intensity, 1.0, 0.0, 0.5)
await get_tree().create_timer(0.5).timeout
$AnimatedSprite2D.material.shader = dissolve_shader
var tween_2: Tween = get_tree().create_tween()
tween_2.tween_method(set_shader_dissolve_value, 1.0, 0.0, 1)
await get_tree().create_timer(1).timeout
queue_free()
func set_shader_blink_intensity(value: float) -> void:
$AnimatedSprite2D.material.set_shader_parameter("blink_intensity", value)
$AnimatedSprite2D.material.set_shader_parameter("blink_color", Color(1, 1, 1, 1))
func set_shader_dissolve_value(value: float) -> void:
$AnimatedSprite2D.material.set_shader_parameter("DissolveValue", value)

View File

@ -0,0 +1,125 @@
[gd_scene load_steps=19 format=3 uid="uid://dft0l6kiatv8r"]
[ext_resource type="Script" path="res://scenes/mob/mob.gd" id="1_4r5kl"]
[ext_resource type="Texture2D" uid="uid://cb18usx4c7w2e" path="res://art/enemyFlyingAlt_1.png" id="2_hsio7"]
[ext_resource type="Shader" uid="uid://ddqioqbov85a2" path="res://scenes/mob/dissolve.tres" id="3_35rgv"]
[ext_resource type="Texture2D" uid="uid://cmk8ralale8i4" path="res://art/enemyFlyingAlt_2.png" id="3_360e7"]
[ext_resource type="Texture2D" uid="uid://blmdxdbb1lxjq" path="res://art/enemySwimming_1.png" id="4_4ch56"]
[ext_resource type="Texture2D" uid="uid://c5m4s7lkl2237" path="res://art/enemySwimming_2.png" id="5_7p3vg"]
[ext_resource type="Texture2D" uid="uid://pldyiivp2t2n" path="res://art/enemyWalking_1.png" id="6_q2v7h"]
[ext_resource type="Texture2D" uid="uid://kvg7h516ydee" path="res://art/enemyWalking_2.png" id="7_oe468"]
[ext_resource type="PackedScene" uid="uid://d0k2dheh1y3ff" path="res://scenes/mob/enemy_output_particles.tscn" id="8_hy8dr"]
[ext_resource type="Shader" path="res://scenes/mob/blink.gdshader" id="9_ral8v"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_gogsm"]
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_euyb8"]
noise = SubResource("FastNoiseLite_gogsm")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_hjs33"]
shader = ExtResource("3_35rgv")
shader_parameter/DissolveValue = 1.0
shader_parameter/DissolveEffectWidth = 0.2
shader_parameter/Noise = SubResource("NoiseTexture2D_euyb8")
[sub_resource type="SpriteFrames" id="SpriteFrames_6vbq8"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_hsio7")
}, {
"duration": 1.0,
"texture": ExtResource("3_360e7")
}],
"loop": true,
"name": &"fly",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("4_4ch56")
}, {
"duration": 1.0,
"texture": ExtResource("5_7p3vg")
}],
"loop": true,
"name": &"swim",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("6_q2v7h")
}, {
"duration": 1.0,
"texture": ExtResource("7_oe468")
}],
"loop": true,
"name": &"walk",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_o56se"]
radius = 34.0
height = 102.0
[sub_resource type="Gradient" id="Gradient_0jlai"]
offsets = PackedFloat32Array(0.882075, 1)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_885pt"]
gradient = SubResource("Gradient_0jlai")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_78ell"]
lifetime_randomness = 1.0
particle_flag_disable_z = true
emission_shape = 1
emission_sphere_radius = 50.0
direction = Vector3(1, -1, 0)
spread = 27.537
initial_velocity_min = 200.0
initial_velocity_max = 400.0
gravity = Vector3(0, 500, 0)
damping_min = 100.0
damping_max = 400.0
scale_min = 3.0
scale_max = 5.0
color_ramp = SubResource("GradientTexture1D_885pt")
hue_variation_min = -0.9
hue_variation_max = -0.7
[node name="Mob" type="RigidBody2D" groups=["mobs"]]
collision_mask = 0
gravity_scale = 0.0
script = ExtResource("1_4r5kl")
blink_shader = ExtResource("9_ral8v")
dissolve_shader = ExtResource("3_35rgv")
metadata/_edit_group_ = true
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_hjs33")
scale = Vector2(0.75, 0.75)
sprite_frames = SubResource("SpriteFrames_6vbq8")
animation = &"walk"
frame = 1
frame_progress = 0.748916
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
rotation = 1.5708
shape = SubResource("CapsuleShape2D_o56se")
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
[node name="TrailParticles" parent="." instance=ExtResource("8_hy8dr")]
z_index = -1
position = Vector2(-18.48, 0)
rotation = 3.14159
[node name="DissolveParticles" type="GPUParticles2D" parent="."]
emitting = false
amount = 40
process_material = SubResource("ParticleProcessMaterial_78ell")
lifetime = 0.6
one_shot = true
explosiveness = 0.69
[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"]

View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://csl66x55e6do8"]
[ext_resource type="PackedScene" uid="uid://dft0l6kiatv8r" path="res://scenes/mob/mob.tscn" id="1_x7vm4"]
[node name="MobTestScene" type="Node2D"]
[node name="Mob" parent="." instance=ExtResource("1_x7vm4")]
position = Vector2(248, 320)

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=5 format=3 uid="uid://cj5s61jxwvux4"]
[ext_resource type="Texture2D" uid="uid://cklr5rdvk4ptu" path="res://scenes/particle/Line1.png" id="1"]
[sub_resource type="Gradient" id="1"]
offsets = PackedFloat32Array(0, 0.158654, 0.860577, 0.908654, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 0.388235, 0.388235, 0.388235, 0.737255, 0.133333, 0.133333, 0.133333, 0.211765, 0, 0, 0, 0)
[sub_resource type="GradientTexture1D" id="2"]
gradient = SubResource("1")
width = 100
[sub_resource type="ParticleProcessMaterial" id="3"]
emission_shape = 2
emission_sphere_radius = 128.0
gravity = Vector3(0, 0, 0)
scale_min = 0.0
scale_max = 8.62
color_ramp = SubResource("2")
[node name="Implosion" type="GPUParticles2D"]
amount = 50
process_material = SubResource("3")
texture = ExtResource("1")

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cklr5rdvk4ptu"
path="res://.godot/imported/Line1.png-012e7d81ae6db70c73357746e496d841.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/particle/Line1.png"
dest_files=["res://.godot/imported/Line1.png-012e7d81ae6db70c73357746e496d841.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

View File

@ -0,0 +1,26 @@
[gd_scene load_steps=4 format=3 uid="uid://cbrqb0c16241l"]
[ext_resource type="Texture2D" uid="uid://balvj8gbkw5fr" path="res://art/beam.png" id="1_5jqot"]
[sub_resource type="Gradient" id="Gradient_73n8c"]
offsets = PackedFloat32Array(0, 0.0416667, 0.191667, 0.9, 1)
colors = PackedColorArray(0, 0, 0, 0, 0.215686, 0.215686, 0.215686, 0, 1, 1, 1, 1, 0.360784, 0.360784, 0.360784, 0.686275, 1, 1, 1, 0)
[sub_resource type="Curve" id="Curve_qkera"]
min_value = -1.0
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[node name="CPUParticles2D" type="CPUParticles2D"]
amount = 30
lifetime = 0.7
texture = ExtResource("1_5jqot")
emission_shape = 2
emission_sphere_radius = 128.0
particle_flag_align_y = true
gravity = Vector2(0, 0)
radial_accel_min = -300.0
color_ramp = SubResource("Gradient_73n8c")
hue_variation_min = 0.89
hue_variation_max = 0.99
hue_variation_curve = SubResource("Curve_qkera")

View File

@ -0,0 +1,60 @@
[gd_scene load_steps=10 format=3 uid="uid://dllre5tl0hejs"]
[sub_resource type="Gradient" id="Gradient_t4ven"]
colors = PackedColorArray(1, 1, 1, 0.262745, 1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_h623q"]
gradient = SubResource("Gradient_t4ven")
[sub_resource type="Gradient" id="Gradient_1cigd"]
offsets = PackedFloat32Array(0, 0.0990566, 0.353774, 0.740566, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_lalpw"]
gradient = SubResource("Gradient_1cigd")
[sub_resource type="Curve" id="Curve_2tn03"]
min_value = -200.0
max_value = 200.0
_data = [Vector2(0, 0), 0.0, 320.251, 0, 1, Vector2(0.116667, 37.3626), 0.0, 0.0, 0, 0, Vector2(0.2625, -32.967), -572.684, 0.0, 0, 0, Vector2(0.391667, 41.7582), 0.0, 0.0, 0, 0, Vector2(0.516667, -24.1758), 0.0, 0.0, 0, 0, Vector2(0.666667, 32.967), 0.0, 0.0, 0, 0, Vector2(0.8, -32.967), 0.0, 0.0, 0, 0, Vector2(0.9, 41.7582), 0.0, 0.0, 0, 0, Vector2(1, -32.967), 0.0, 0.0, 0, 0]
point_count = 9
[sub_resource type="CurveTexture" id="CurveTexture_2y6o4"]
curve = SubResource("Curve_2tn03")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_jyv0q"]
particle_flag_disable_z = true
emission_shape = 3
emission_box_extents = Vector3(200, 400, 1)
spread = 10.0
initial_velocity_min = 257.25
initial_velocity_max = 257.25
gravity = Vector3(50, 15, 0)
tangential_accel_min = -2.23517e-06
tangential_accel_max = 6.0
tangential_accel_curve = SubResource("CurveTexture_2y6o4")
damping_max = 100.0
scale_min = 2.0
scale_max = 3.0
color_ramp = SubResource("GradientTexture1D_lalpw")
color_initial_ramp = SubResource("GradientTexture1D_h623q")
[sub_resource type="Gradient" id="Gradient_x41e1"]
offsets = PackedFloat32Array(0, 0.290984, 0.762295, 1)
colors = PackedColorArray(0.74902, 0.921569, 0.878431, 0, 0.542767, 0.908156, 0.871601, 1, 0.690008, 0.918154, 0.744606, 1, 0.780392, 0.937255, 0.831373, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ooxhm"]
gradient = SubResource("Gradient_x41e1")
width = 1
height = 32
fill_to = Vector2(0, 1)
[node name="WindTrail" type="GPUParticles2D"]
amount = 15
process_material = SubResource("ParticleProcessMaterial_jyv0q")
texture = SubResource("GradientTexture2D_ooxhm")
lifetime = 5.0
preprocess = 2.0
randomness = 1.0
trail_enabled = true
trail_lifetime = 0.6

View File

@ -0,0 +1,74 @@
extends Area2D
signal hit
@export var max_speed: float = 200
@export var acceleration: float = 75
@export var friction: float = 0.2
var player_velocity: Vector2 = Vector2.ZERO
var screen_size: Vector2
var screen_area: Rect2
func _ready() -> void:
screen_size = get_viewport_rect().size
var player_size: Vector2 = $CollisionShape2D.shape.get_rect().size
screen_area = Rect2(Vector2.ZERO, screen_size)
screen_area.position.x += player_size.x / 2
screen_area.position.y += player_size.y / 2
screen_area.size.x -= player_size.x / 2
screen_area.size.y -= player_size.y / 2
func _process(delta: float) -> void:
var apply_velocity: Vector2 = Vector2.ZERO
if Input.is_action_pressed("move_right"):
apply_velocity += Vector2.RIGHT
if Input.is_action_pressed("move_left"):
apply_velocity += Vector2.LEFT
if Input.is_action_pressed("move_up"):
apply_velocity += Vector2.UP
if Input.is_action_pressed("move_down"):
apply_velocity += Vector2.DOWN
apply_velocity = apply_velocity.normalized()
player_velocity -= player_velocity * friction
player_velocity += apply_velocity * acceleration * delta
if player_velocity.length() > max_speed:
player_velocity = player_velocity.normalized() * max_speed
if player_velocity.length() < 0.1:
player_velocity = Vector2.ZERO
position += player_velocity
position = position.clamp(screen_area.position, screen_area.size)
if player_velocity.y > 0:
$AnimatedSprite2D.flip_v = true
elif player_velocity.y < 0:
$AnimatedSprite2D.flip_v = false
if player_velocity.length() > 0:
$AnimatedSprite2D.play()
else:
$AnimatedSprite2D.stop()
func start(pos):
position = pos
show()
$CollisionShape2D.disabled = false
func disable():
hide()
# Must be deferred as we can't change physics properties on a physics callback.
$CollisionShape2D.set_deferred("disabled", true)
func _on_body_entered(body):
if body.is_in_group("mobs"):
hit.emit()
body.hit_player()

View File

@ -0,0 +1,51 @@
[gd_scene load_steps=8 format=3 uid="uid://b67uwwuoqaj8k"]
[ext_resource type="Script" path="res://scenes/player/player.gd" id="1_dqs50"]
[ext_resource type="Texture2D" uid="uid://blnfsjbjj5027" path="res://art/playerGrey_up1.png" id="1_p1pgv"]
[ext_resource type="Texture2D" uid="uid://b3snl7ecix3gw" path="res://art/playerGrey_up2.png" id="2_yvyxf"]
[ext_resource type="Texture2D" uid="uid://bply3mtijfqjw" path="res://art/playerGrey_walk1.png" id="3_qoqvm"]
[ext_resource type="Texture2D" uid="uid://dx8sxdl3n3wiy" path="res://art/playerGrey_walk2.png" id="4_0jjgm"]
[sub_resource type="SpriteFrames" id="SpriteFrames_by15q"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("1_p1pgv")
}, {
"duration": 1.0,
"texture": ExtResource("2_yvyxf")
}],
"loop": true,
"name": &"up",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("3_qoqvm")
}, {
"duration": 1.0,
"texture": ExtResource("4_0jjgm")
}],
"loop": true,
"name": &"walk",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_kmbv5"]
radius = 27.0
height = 68.0
[node name="Player" type="Area2D"]
position = Vector2(70, 76)
script = ExtResource("1_dqs50")
metadata/_edit_group_ = true
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
scale = Vector2(0.5, 0.5)
sprite_frames = SubResource("SpriteFrames_by15q")
animation = &"up"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CapsuleShape2D_kmbv5")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]