My first 2D game in Godot 4.4
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
||||
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
/android/
|
||||
39
addons/colorpicker_presets/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# GDQuest ColorPicker Presets
|
||||
|
||||
Reads a color presets `gpl` (GIMP Palette) file in the addon local directory, called `presets.gpl`. It adds the colors to the editor ColorPicker for quick access.
|
||||
|
||||
This repository includes a `presets.gpl` file as an example. It's the official GDQuest color palette.
|
||||
|
||||
## ✗ WARNING
|
||||
|
||||
> Compatible: Godot `>= v4.0`
|
||||
|
||||
The addon:
|
||||
|
||||
1. Doesn't check the length of the color palette/file.
|
||||
1. Overwrites the _ColorPicker_ presets whenever you reopen the project or re-enable the addon.
|
||||
|
||||
## ✓ Install
|
||||
|
||||
### Using [Godot Package Manager](https://github.com/godot-package-manager)
|
||||
|
||||
1. `gpm init`.
|
||||
1. Follow instructions with [NPMjs package](https://www.npmjs.com/package/gdquest.colorpicker_presets).
|
||||
1. Enable the addon from `Project > Project Settings... > Plugins`.
|
||||
1. Profit.
|
||||
|
||||
### Manual
|
||||
|
||||
1. Make a new folder at `res://addons/colorpicker_presets/`.
|
||||
1. Copy the contents of this repository into `res://addons/colorpicker_presets/`.
|
||||
1. Replace `res://addons/colorpicker_presets/presets.gpl` with your preferred version.
|
||||
1. Enable the addon from `Project > Project Settings... > Plugins`.
|
||||
1. Profit.
|
||||
|
||||

|
||||
|
||||
## Where do I find the presets?
|
||||
|
||||
They'll be available in the editor _ColorPicker_.
|
||||
|
||||

|
||||
26
addons/colorpicker_presets/colorpicker_presets.gd
Normal file
@@ -0,0 +1,26 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
|
||||
const PRESETS_FILENAME := 'presets.gpl'
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
var presets_path: String = get_script().resource_path.get_base_dir().path_join(PRESETS_FILENAME)
|
||||
var presets_file := FileAccess.open(presets_path, FileAccess.READ)
|
||||
|
||||
if FileAccess.get_open_error() == OK:
|
||||
var presets_raw := presets_file.get_as_text(true).strip_edges().split("\n")
|
||||
presets_file.close()
|
||||
presets_raw = presets_raw.slice(presets_raw.find("#") + 1)
|
||||
var presets := Array(presets_raw).map(
|
||||
func(s: String):
|
||||
var rgb := (Array(s.strip_edges().split(" ").slice(0, -1))
|
||||
.filter(func(s: String): return not s.is_empty())
|
||||
.map(func(s: String): return s.to_int())
|
||||
)
|
||||
return Color8(rgb[0], rgb[1], rgb[2])
|
||||
)
|
||||
get_editor_interface().get_editor_settings().set_project_metadata(
|
||||
"color_picker", "presets", presets
|
||||
)
|
||||
1
addons/colorpicker_presets/colorpicker_presets.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://efuldfeh4dud
|
||||
9
addons/colorpicker_presets/plugin.cfg
Normal file
@@ -0,0 +1,9 @@
|
||||
[plugin]
|
||||
|
||||
name="GDQuest ColorPicker Presets"
|
||||
description="Sets the editor color picker presets from
|
||||
`presets.hex`, if it exists. The file is local to the
|
||||
addon folder."
|
||||
author="razcore-rad"
|
||||
version="0.0.2-beta"
|
||||
script="colorpicker_presets.gd"
|
||||
31
addons/colorpicker_presets/presets.gpl
Normal file
@@ -0,0 +1,31 @@
|
||||
GIMP Palette
|
||||
Name: gdquest.gpl
|
||||
#
|
||||
0 122 195 Blue
|
||||
16 178 239 BlueAlt
|
||||
6 29 84 BlueDark
|
||||
207 221 255 BlueLight
|
||||
108 44 218 Purple
|
||||
141 25 215 PurpleAlt
|
||||
40 20 78 PurpleDark
|
||||
235 224 255 PurpleLight
|
||||
196 29 61 Red
|
||||
255 65 125 RedAlt/Pink
|
||||
115 39 92 RedDark
|
||||
255 219 244 RedLight
|
||||
255 183 48 Yellow
|
||||
255 213 0 YellowAlt
|
||||
222 80 43 YellowDark/Orange
|
||||
255 236 201 YellowLight
|
||||
99 204 95 Green
|
||||
159 221 81 GreenAlt/Lime
|
||||
21 89 63 GreenDark
|
||||
221 255 242 GreenLight/Mint
|
||||
109 61 44 Brown
|
||||
176 87 55 BrownAlt
|
||||
106 25 0 BrownDark
|
||||
255 227 227 BrownLight
|
||||
202 202 202 Gray
|
||||
255 255 255 White
|
||||
39 43 48 Deep
|
||||
243 248 254 Light
|
||||
0
addons/colorpicker_presets/readme/.gdignore
Normal file
BIN
addons/colorpicker_presets/readme/colorpicker_presets.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
addons/colorpicker_presets/readme/install_project_settings.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
21
bullet.gd
Normal file
@@ -0,0 +1,21 @@
|
||||
extends Area2D
|
||||
|
||||
var travelled_distance = 0
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
const SPEED = 800.0
|
||||
const MAX_RANGE = 1500.0
|
||||
|
||||
var direction = Vector2.RIGHT.rotated(rotation)
|
||||
position += (direction * SPEED) * delta
|
||||
travelled_distance += SPEED * delta
|
||||
|
||||
if travelled_distance >= MAX_RANGE:
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
queue_free()
|
||||
|
||||
if body.has_method("take_damage"):
|
||||
body.take_damage()
|
||||
1
bullet.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b1og3ublo2loc
|
||||
22
bullet.tscn
Normal file
@@ -0,0 +1,22 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://luwdantua0vh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b1og3ublo2loc" path="res://bullet.gd" id="1_v8qja"]
|
||||
[ext_resource type="Texture2D" uid="uid://dftkbqwsfd68r" path="res://pistol/projectile.png" id="2_t4vbm"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_2b2rl"]
|
||||
radius = 15.0333
|
||||
|
||||
[node name="Bullet" type="Area2D"]
|
||||
top_level = true
|
||||
collision_layer = 0
|
||||
collision_mask = 3
|
||||
script = ExtResource("1_v8qja")
|
||||
|
||||
[node name="Projectile" type="Sprite2D" parent="."]
|
||||
position = Vector2(-11, -1)
|
||||
texture = ExtResource("2_t4vbm")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("CircleShape2D_2b2rl")
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
BIN
characters/ground_shadow.png
Normal file
|
After Width: | Height: | Size: 752 B |
34
characters/ground_shadow.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b7rhtttevhxtj"
|
||||
path="res://.godot/imported/ground_shadow.png-b9267d10ca04362d5b540659e4ab0dbd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/ground_shadow.png"
|
||||
dest_files=["res://.godot/imported/ground_shadow.png-b9267d10ca04362d5b540659e4ab0dbd.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
|
||||
9
characters/happy_boo/happy_boo.gd
Normal file
@@ -0,0 +1,9 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
func play_idle_animation():
|
||||
%AnimationPlayer.play("idle")
|
||||
|
||||
|
||||
func play_walk_animation():
|
||||
%AnimationPlayer.play("walk")
|
||||
1
characters/happy_boo/happy_boo.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dhe20gx73tm5u
|
||||
651
characters/happy_boo/happy_boo.tscn
Normal file
@@ -0,0 +1,651 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://pbmyh1qru7p"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dhe20gx73tm5u" path="res://characters/happy_boo/happy_boo.gd" id="1_kg7lb"]
|
||||
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="2_62bos"]
|
||||
[ext_resource type="Texture2D" uid="uid://ng8e5ot0dtpd" path="res://characters/happy_boo/square_foot.png" id="3_186qq"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhapxq8y8ow57" path="res://characters/happy_boo/square_lower_leg.png" id="4_plnsd"]
|
||||
[ext_resource type="Texture2D" uid="uid://qmqpm6asge1i" path="res://characters/happy_boo/square_upper_leg.png" id="5_q2t1e"]
|
||||
[ext_resource type="Texture2D" uid="uid://cksiu5gst6fmp" path="res://characters/happy_boo/square_body.png" id="6_w3ck4"]
|
||||
[ext_resource type="Texture2D" uid="uid://cvs0lh814pk7h" path="res://characters/happy_boo/square_face.png" id="7_h5h8s"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_hed62"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Colorizer/SquareUpperLegL:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-10.6303, -27.3998)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Colorizer/SquareUpperLegL:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.4009]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 14)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:rotation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-2.98023e-08]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-3.40666]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Colorizer/SquareUpperLegR:position")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(9.20459, -29.9444)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Colorizer/SquareUpperLegR:rotation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-0.213676]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:position")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-4.76837e-07, 14)]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:rotation")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:position")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12)]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:rotation")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-2.92296]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("Colorizer/SquareBody:position")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-1.73067, -36.6061)]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("Colorizer/SquareBody:rotation")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-0.0250386]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("Colorizer/SquareBody/SquareFace:position")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, -17)]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("Colorizer/SquareBody/SquareFace:rotation")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_sablf"]
|
||||
resource_name = "idle"
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Colorizer/SquareUpperLegL:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-10.6303, -27.3998)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Colorizer/SquareUpperLegL:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.4009]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 14)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:rotation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-2.98023e-08]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-3.40666]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Colorizer/SquareUpperLegR:position")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(9.20459, -29.9444)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Colorizer/SquareUpperLegR:rotation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-0.213676]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:position")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-4.76837e-07, 14)]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:rotation")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:position")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12)]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:rotation")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-2.92296]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("Colorizer/SquareBody:position")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0, 0.4, 0.8),
|
||||
"transitions": PackedFloat32Array(0.466516, 0.189465, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-1.73067, -36.6061), Vector2(-1.731, -32), Vector2(-1.731, -38)]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("Colorizer/SquareBody:rotation")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0, 0.4),
|
||||
"transitions": PackedFloat32Array(2.46229, 0.535887),
|
||||
"update": 0,
|
||||
"values": [-0.0250386, 0.0698132]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("Colorizer/SquareBody/SquareFace:position")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, -17)]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("Colorizer/SquareBody/SquareFace:rotation")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_74kqe"]
|
||||
resource_name = "walk"
|
||||
length = 0.6
|
||||
loop_mode = 1
|
||||
step = 0.0333333
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Colorizer/SquareUpperLegL:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3, 0.466666),
|
||||
"transitions": PackedFloat32Array(1, 0.5, 2),
|
||||
"update": 0,
|
||||
"values": [Vector2(-10.6303, -27.3998), Vector2(-10.6303, -27.3998), Vector2(-16, -40)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Colorizer/SquareUpperLegL:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3, 0.466666),
|
||||
"transitions": PackedFloat32Array(1, 0.5, 2),
|
||||
"update": 0,
|
||||
"values": [0.4009, 0.4009, -0.197871]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 0.5),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 14), Vector2(0, 14)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL:rotation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3, 0.466667),
|
||||
"transitions": PackedFloat32Array(1, 0.5, 2),
|
||||
"update": 0,
|
||||
"values": [-2.98023e-08, -2.98023e-08, 1.12966]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 0.5),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12), Vector2(0, 12)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Colorizer/SquareUpperLegL/SquareLowerLegL/SquareFootL:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3, 0.466667),
|
||||
"transitions": PackedFloat32Array(1, 0.5, 2),
|
||||
"update": 0,
|
||||
"values": [-3.40666, -3.40666, -3.92035]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Colorizer/SquareUpperLegR:position")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.166667, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 2, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(9, -27), Vector2(11, -44), Vector2(9, -27)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Colorizer/SquareUpperLegR:rotation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 0.166667, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 2, 1),
|
||||
"update": 0,
|
||||
"values": [-0.213676, -0.458455, -0.213676]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:position")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-4.76837e-07, 14), Vector2(-4.76837e-07, 14)]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR:rotation")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0, 0.166667, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 2, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 0.888296, 0.0]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:position")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 12), Vector2(0, 12)]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("Colorizer/SquareUpperLegR/SquareLowerLegR/SquareFootR:rotation")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0, 0.166667, 0.3),
|
||||
"transitions": PackedFloat32Array(0.5, 2, 1),
|
||||
"update": 0,
|
||||
"values": [-2.92296, -3.45549, -2.92296]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("Colorizer/SquareBody:position")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-1.73067, -36.6061)]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("Colorizer/SquareBody:rotation")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0, 0.166667, 0.3, 0.466667),
|
||||
"transitions": PackedFloat32Array(0.392292, 1.31951, 0.267943, 1.8025),
|
||||
"update": 0,
|
||||
"values": [-0.0250386, -0.209487, 0.0372028, 0.23927]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wrcpu"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_hed62"),
|
||||
&"idle": SubResource("Animation_sablf"),
|
||||
&"walk": SubResource("Animation_74kqe")
|
||||
}
|
||||
|
||||
[node name="HappyBoo" type="Node2D"]
|
||||
script = ExtResource("1_kg7lb")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
playback_default_blend_time = 0.2
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_wrcpu")
|
||||
}
|
||||
|
||||
[node name="GroundShadow" type="Sprite2D" parent="."]
|
||||
modulate = Color(0.898039, 0.878431, 0.831373, 1)
|
||||
z_index = -1
|
||||
z_as_relative = false
|
||||
scale = Vector2(0.8, 0.8)
|
||||
texture = ExtResource("2_62bos")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Colorizer" type="Node2D" parent="."]
|
||||
modulate = Color(1, 0.572549, 0.176471, 1)
|
||||
|
||||
[node name="SquareUpperLegL" type="Sprite2D" parent="Colorizer"]
|
||||
position = Vector2(-10.6303, -27.3998)
|
||||
rotation = 0.4009
|
||||
scale = Vector2(0.997829, 0.999794)
|
||||
texture = ExtResource("5_q2t1e")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="SquareLowerLegL" type="Sprite2D" parent="Colorizer/SquareUpperLegL"]
|
||||
position = Vector2(0, 14)
|
||||
texture = ExtResource("4_plnsd")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="SquareFootL" type="Sprite2D" parent="Colorizer/SquareUpperLegL/SquareLowerLegL"]
|
||||
position = Vector2(0, 12)
|
||||
rotation = -3.40666
|
||||
scale = Vector2(1.01116, 1)
|
||||
texture = ExtResource("3_186qq")
|
||||
offset = Vector2(-4, 0)
|
||||
|
||||
[node name="SquareUpperLegR" type="Sprite2D" parent="Colorizer"]
|
||||
position = Vector2(9.20459, -29.9444)
|
||||
rotation = -0.213676
|
||||
scale = Vector2(0.999794, 0.999794)
|
||||
texture = ExtResource("5_q2t1e")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="SquareLowerLegR" type="Sprite2D" parent="Colorizer/SquareUpperLegR"]
|
||||
position = Vector2(-4.76837e-07, 14)
|
||||
texture = ExtResource("4_plnsd")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="SquareFootR" type="Sprite2D" parent="Colorizer/SquareUpperLegR/SquareLowerLegR"]
|
||||
position = Vector2(0, 12)
|
||||
rotation = -2.92296
|
||||
texture = ExtResource("3_186qq")
|
||||
offset = Vector2(-4, 0)
|
||||
|
||||
[node name="SquareBody" type="Sprite2D" parent="Colorizer"]
|
||||
position = Vector2(-1.73067, -36.6061)
|
||||
rotation = -0.0250386
|
||||
scale = Vector2(0.9842, 0.990263)
|
||||
texture = ExtResource("6_w3ck4")
|
||||
offset = Vector2(0, -23)
|
||||
|
||||
[node name="SquareFace" type="Sprite2D" parent="Colorizer/SquareBody"]
|
||||
position = Vector2(0, -17)
|
||||
texture = ExtResource("7_h5h8s")
|
||||
metadata/_edit_lock_ = true
|
||||
BIN
characters/happy_boo/square_body.png
Normal file
|
After Width: | Height: | Size: 750 B |
34
characters/happy_boo/square_body.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cksiu5gst6fmp"
|
||||
path="res://.godot/imported/square_body.png-ef1c56c8912cd968d7fd09a95e6ea8f4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_body.png"
|
||||
dest_files=["res://.godot/imported/square_body.png-ef1c56c8912cd968d7fd09a95e6ea8f4.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
characters/happy_boo/square_face.png
Normal file
|
After Width: | Height: | Size: 414 B |
34
characters/happy_boo/square_face.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cvs0lh814pk7h"
|
||||
path="res://.godot/imported/square_face.png-e27720ce35d82859f41580927c22ef18.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_face.png"
|
||||
dest_files=["res://.godot/imported/square_face.png-e27720ce35d82859f41580927c22ef18.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
characters/happy_boo/square_foot.png
Normal file
|
After Width: | Height: | Size: 312 B |
34
characters/happy_boo/square_foot.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ng8e5ot0dtpd"
|
||||
path="res://.godot/imported/square_foot.png-62023e9ce7985c4b370739df29445354.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_foot.png"
|
||||
dest_files=["res://.godot/imported/square_foot.png-62023e9ce7985c4b370739df29445354.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
characters/happy_boo/square_lower_leg.png
Normal file
|
After Width: | Height: | Size: 319 B |
34
characters/happy_boo/square_lower_leg.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dhapxq8y8ow57"
|
||||
path="res://.godot/imported/square_lower_leg.png-313909793abe38b44566c8e252c075e0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_lower_leg.png"
|
||||
dest_files=["res://.godot/imported/square_lower_leg.png-313909793abe38b44566c8e252c075e0.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
|
||||
23
characters/happy_boo/square_modification_stack.tres
Normal file
@@ -0,0 +1,23 @@
|
||||
[gd_resource type="SkeletonModificationStack2D" load_steps=3 format=3 uid="uid://dtf0pmja4mcaa"]
|
||||
|
||||
[sub_resource type="SkeletonModification2DTwoBoneIK" id="SkeletonModification2DTwoBoneIK_7lb5u"]
|
||||
target_nodepath = NodePath("FootLIK")
|
||||
flip_bend_direction = true
|
||||
joint_one_bone_idx = 1
|
||||
joint_one_bone2d_node = NodePath("Center/UpperLegL")
|
||||
joint_two_bone_idx = 2
|
||||
joint_two_bone2d_node = NodePath("Center/UpperLegL/LowerLegL")
|
||||
editor/draw_gizmo = false
|
||||
|
||||
[sub_resource type="SkeletonModification2DTwoBoneIK" id="SkeletonModification2DTwoBoneIK_h82yt"]
|
||||
target_nodepath = NodePath("FootRIK")
|
||||
joint_one_bone_idx = 4
|
||||
joint_one_bone2d_node = NodePath("Center/UpperLegR")
|
||||
joint_two_bone_idx = 5
|
||||
joint_two_bone2d_node = NodePath("Center/UpperLegR/LowerLegR")
|
||||
|
||||
[resource]
|
||||
enabled = true
|
||||
modification_count = 2
|
||||
modifications/0 = SubResource("SkeletonModification2DTwoBoneIK_7lb5u")
|
||||
modifications/1 = SubResource("SkeletonModification2DTwoBoneIK_h82yt")
|
||||
BIN
characters/happy_boo/square_ref.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
34
characters/happy_boo/square_ref.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b2ent6mf1y7w7"
|
||||
path="res://.godot/imported/square_ref.png-ad4b2771e34de0b9a0fbda7055a9fe1c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_ref.png"
|
||||
dest_files=["res://.godot/imported/square_ref.png-ad4b2771e34de0b9a0fbda7055a9fe1c.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
characters/happy_boo/square_upper_leg.png
Normal file
|
After Width: | Height: | Size: 246 B |
34
characters/happy_boo/square_upper_leg.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://qmqpm6asge1i"
|
||||
path="res://.godot/imported/square_upper_leg.png-e1f848aab7dd8805f40f881c2160a53d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/happy_boo/square_upper_leg.png"
|
||||
dest_files=["res://.godot/imported/square_upper_leg.png-e1f848aab7dd8805f40f881c2160a53d.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
|
||||
10
characters/slime/slime.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
func play_walk():
|
||||
%AnimationPlayer.play("walk")
|
||||
|
||||
|
||||
func play_hurt():
|
||||
%AnimationPlayer.play("hurt")
|
||||
%AnimationPlayer.queue("walk")
|
||||
1
characters/slime/slime.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://fv1e5gkanivs
|
||||
245
characters/slime/slime.tscn
Normal file
@@ -0,0 +1,245 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://ogik4s70pgwl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dvgfmy6vtvjji" path="res://characters/slime/slime_body.png" id="1_3j35h"]
|
||||
[ext_resource type="Script" uid="uid://fv1e5gkanivs" path="res://characters/slime/slime.gd" id="1_87y5x"]
|
||||
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="1_cq7ej"]
|
||||
[ext_resource type="Texture2D" uid="uid://c078jrp2yvc4s" path="res://characters/slime/slime_face.png" id="2_ygydt"]
|
||||
[ext_resource type="Texture2D" uid="uid://btbxea1f3vwot" path="res://characters/slime/slime_body_hurt.png" id="4_0qu0c"]
|
||||
[ext_resource type="Texture2D" uid="uid://cai2ijnbypqtr" path="res://characters/slime/slime_hurt_eyes.png" id="4_hi70h"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_y4lve"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/Face:position:y")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-25.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor:position:y")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/Face/SlimeFace:texture")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("2_ygydt")]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Anchor:scale")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_lu163"]
|
||||
resource_name = "hurt"
|
||||
length = 0.2
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/Face/SlimeFace:texture")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("4_hi70h"), ExtResource("2_ygydt")]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/Face:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [-25.0, -35.0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor:scale")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/SlimeBody/SlimeBodyHurt:modulate:a")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2),
|
||||
"transitions": PackedFloat32Array(1, -2, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 1.0, 0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_71vdi"]
|
||||
resource_name = "idle"
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/Face:position:y")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 1),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [-28.0, -24.0, -28.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 1),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(1.05, 0.95), Vector2(1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor:position:y")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_l6fy2"]
|
||||
resource_name = "walk"
|
||||
length = 0.4
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor:position:y")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, -20.0, 0.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.1, 0.3, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0.9, 1.1), Vector2(1.1, 0.9), Vector2(0.9, 1.1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/Face:position:y")
|
||||
tracks/2/interp = 2
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0.1, 0.3, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [-24.0, -28.0, -24.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_j6cum"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_y4lve"),
|
||||
&"hurt": SubResource("Animation_lu163"),
|
||||
&"idle": SubResource("Animation_71vdi"),
|
||||
&"walk": SubResource("Animation_l6fy2")
|
||||
}
|
||||
|
||||
[node name="Slime" type="Node2D"]
|
||||
script = ExtResource("1_87y5x")
|
||||
|
||||
[node name="GroundShadow" type="Sprite2D" parent="."]
|
||||
modulate = Color(0.898039, 0.878431, 0.831373, 1)
|
||||
z_index = -1
|
||||
z_as_relative = false
|
||||
scale = Vector2(0.8, 0.8)
|
||||
texture = ExtResource("1_cq7ej")
|
||||
|
||||
[node name="Anchor" type="Marker2D" parent="."]
|
||||
|
||||
[node name="SlimeBody" type="Sprite2D" parent="Anchor"]
|
||||
texture = ExtResource("1_3j35h")
|
||||
offset = Vector2(0, -36)
|
||||
|
||||
[node name="SlimeBodyHurt" type="Sprite2D" parent="Anchor/SlimeBody"]
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
texture = ExtResource("4_0qu0c")
|
||||
offset = Vector2(0, -36)
|
||||
|
||||
[node name="Face" type="Marker2D" parent="Anchor"]
|
||||
position = Vector2(0, -25)
|
||||
|
||||
[node name="SlimeFace" type="Sprite2D" parent="Anchor/Face"]
|
||||
texture = ExtResource("2_ygydt")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_j6cum")
|
||||
}
|
||||
BIN
characters/slime/slime_body.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
characters/slime/slime_body.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dvgfmy6vtvjji"
|
||||
path="res://.godot/imported/slime_body.png-0d515f9e912a0d42a36c28f828394f6a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/slime/slime_body.png"
|
||||
dest_files=["res://.godot/imported/slime_body.png-0d515f9e912a0d42a36c28f828394f6a.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
characters/slime/slime_body_hurt.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
34
characters/slime/slime_body_hurt.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://btbxea1f3vwot"
|
||||
path="res://.godot/imported/slime_body_hurt.png-3f38b75e5ebee1f99a984b348a7e7f8b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/slime/slime_body_hurt.png"
|
||||
dest_files=["res://.godot/imported/slime_body_hurt.png-3f38b75e5ebee1f99a984b348a7e7f8b.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
characters/slime/slime_face.png
Normal file
|
After Width: | Height: | Size: 609 B |
34
characters/slime/slime_face.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c078jrp2yvc4s"
|
||||
path="res://.godot/imported/slime_face.png-561a1f87b138570340118953f07aab21.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/slime/slime_face.png"
|
||||
dest_files=["res://.godot/imported/slime_face.png-561a1f87b138570340118953f07aab21.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
characters/slime/slime_hurt_eyes.png
Normal file
|
After Width: | Height: | Size: 406 B |
34
characters/slime/slime_hurt_eyes.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cai2ijnbypqtr"
|
||||
path="res://.godot/imported/slime_hurt_eyes.png-711256b4a2a47dcea723d274f00b4628.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://characters/slime/slime_hurt_eyes.png"
|
||||
dest_files=["res://.godot/imported/slime_hurt_eyes.png-711256b4a2a47dcea723d274f00b4628.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
|
||||
3
default_bus_layout.tres
Normal file
@@ -0,0 +1,3 @@
|
||||
[gd_resource type="AudioBusLayout" format=3 uid="uid://c0r1synmqj70v"]
|
||||
|
||||
[resource]
|
||||
108
export_presets.cfg
Normal file
@@ -0,0 +1,108 @@
|
||||
[preset.0]
|
||||
|
||||
name="Linux"
|
||||
platform="Linux"
|
||||
runnable=true
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../../ShootahGame.x86_64"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
binary_format/architecture="x86_64"
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||
export DISPLAY=:0
|
||||
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
||||
rm -rf \"{temp_dir}\""
|
||||
|
||||
[preset.1]
|
||||
|
||||
name="Windows Desktop"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../../ShootahGame.exe"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
binary_format/architecture="x86_64"
|
||||
codesign/enable=false
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PackedStringArray()
|
||||
application/modify_resources=false
|
||||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description=""
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
application/export_d3d12=0
|
||||
application/d3d12_agility_sdk_multiarch=true
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
||||
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||
Start-ScheduledTask -TaskName godot_remote_debug
|
||||
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||
19
gun.gd
Normal file
@@ -0,0 +1,19 @@
|
||||
extends Area2D
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
var monsters_in_range = get_overlapping_bodies()
|
||||
|
||||
if monsters_in_range.size() > 0:
|
||||
var target = monsters_in_range.front()
|
||||
look_at(target.global_position)
|
||||
|
||||
func shoot():
|
||||
const BULLET = preload("res://bullet.tscn")
|
||||
var new_bullet = BULLET.instantiate()
|
||||
|
||||
new_bullet.global_transform = %Barrel.global_transform
|
||||
%Barrel.add_child(new_bullet)
|
||||
|
||||
|
||||
func _on_timer_timeout() -> void:
|
||||
shoot()
|
||||
1
gun.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dl331nhv6dm0l
|
||||
31
gun.tscn
Normal file
@@ -0,0 +1,31 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://daagdf86t4bjn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dl331nhv6dm0l" path="res://gun.gd" id="1_dk5gl"]
|
||||
[ext_resource type="Texture2D" uid="uid://cswb5do8rrj7q" path="res://pistol/pistol.png" id="1_vk1bi"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_dk5gl"]
|
||||
radius = 356.051
|
||||
|
||||
[node name="Gun" type="Area2D"]
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
script = ExtResource("1_dk5gl")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("CircleShape2D_dk5gl")
|
||||
|
||||
[node name="Pivot" type="Marker2D" parent="."]
|
||||
|
||||
[node name="Pistol" type="Sprite2D" parent="Pivot"]
|
||||
position = Vector2(85, 0)
|
||||
texture = ExtResource("1_vk1bi")
|
||||
|
||||
[node name="Barrel" type="Marker2D" parent="Pivot/Pistol"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(25, -11)
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 0.33
|
||||
autostart = true
|
||||
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||
34
icon.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://i4cjdwy1kcoj"
|
||||
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.png"
|
||||
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.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
|
||||
28
monster.gd
Normal file
@@ -0,0 +1,28 @@
|
||||
extends CharacterBody2D
|
||||
|
||||
var health = 3
|
||||
|
||||
@onready var player = get_node("/root/Game/Player")
|
||||
|
||||
func _ready() -> void:
|
||||
%Slime.play_walk()
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
var direction = global_position.direction_to(player.global_position)
|
||||
velocity = direction * 200.0
|
||||
move_and_slide()
|
||||
|
||||
func take_damage() -> void:
|
||||
const SMOKE_EXPLOSION = preload("res://smoke_explosion/smoke_explosion.tscn")
|
||||
|
||||
%Slime.play_hurt()
|
||||
health -= 1
|
||||
|
||||
if health == 0:
|
||||
queue_free()
|
||||
var s = SMOKE_EXPLOSION.instantiate()
|
||||
get_parent().add_child(s)
|
||||
s.global_transform = global_transform
|
||||
|
||||
|
||||
|
||||
1
monster.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://btk7g8n7jstwp
|
||||
21
monster.tscn
Normal file
@@ -0,0 +1,21 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://5dgdagljfax1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://btk7g8n7jstwp" path="res://monster.gd" id="1_mrqeg"]
|
||||
[ext_resource type="PackedScene" uid="uid://ogik4s70pgwl" path="res://characters/slime/slime.tscn" id="2_ga5te"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_vr0w3"]
|
||||
radius = 45.815
|
||||
height = 114.012
|
||||
|
||||
[node name="Monster" type="CharacterBody2D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 3
|
||||
script = ExtResource("1_mrqeg")
|
||||
|
||||
[node name="Slime" parent="." instance=ExtResource("2_ga5te")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -32)
|
||||
rotation = -1.57878
|
||||
shape = SubResource("CapsuleShape2D_vr0w3")
|
||||
BIN
pistol/impact/circle.png
Normal file
|
After Width: | Height: | Size: 806 B |
34
pistol/impact/circle.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dn80eu1qs371v"
|
||||
path="res://.godot/imported/circle.png-a2fa3270dee1c1c7e1cb0869903e82df.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://pistol/impact/circle.png"
|
||||
dest_files=["res://.godot/imported/circle.png-a2fa3270dee1c1c7e1cb0869903e82df.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
|
||||
10
pistol/impact/impact.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var sprite = %Sprite
|
||||
|
||||
|
||||
func _ready():
|
||||
var tween = create_tween().set_parallel(true).set_ease(Tween.EASE_OUT)
|
||||
tween.tween_property(sprite, "scale", Vector2.ONE * 1.35, 0.3).from(Vector2.ONE * 0.6)
|
||||
tween.tween_property(sprite, "modulate:a", 0.0, 0.15).set_delay(0.15)
|
||||
tween.chain().tween_callback(queue_free)
|
||||
1
pistol/impact/impact.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c6w1u8mii1jdj
|
||||
13
pistol/impact/impact.tscn
Normal file
@@ -0,0 +1,13 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://kcl4efkvrany"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c6w1u8mii1jdj" path="res://pistol/impact/impact.gd" id="1_4vum2"]
|
||||
[ext_resource type="Texture2D" uid="uid://dn80eu1qs371v" path="res://pistol/impact/circle.png" id="2_wp1di"]
|
||||
|
||||
[node name="Impact" type="Node2D"]
|
||||
top_level = true
|
||||
script = ExtResource("1_4vum2")
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0.831373, 0.239216, 1)
|
||||
texture = ExtResource("2_wp1di")
|
||||
11
pistol/muzzle_flash/muzzle_flash.gd
Normal file
@@ -0,0 +1,11 @@
|
||||
extends Node2D
|
||||
|
||||
@onready var sprite = %Sprite
|
||||
|
||||
|
||||
func _ready():
|
||||
var tween = create_tween().set_parallel(true).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK)
|
||||
tween.tween_property(sprite, "position:x", 16.0, 0.25)
|
||||
tween.tween_property(sprite, "scale", Vector2.ONE * 1.25, 0.25)
|
||||
tween.tween_property(sprite, "modulate:a", 0.0, 0.25).set_delay(0.1)
|
||||
tween.chain().tween_callback(queue_free)
|
||||
1
pistol/muzzle_flash/muzzle_flash.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://beuxhimda3hkr
|
||||
BIN
pistol/muzzle_flash/muzzle_flash.png
Normal file
|
After Width: | Height: | Size: 683 B |
34
pistol/muzzle_flash/muzzle_flash.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://brgpjilf7s2ul"
|
||||
path="res://.godot/imported/muzzle_flash.png-752b19c1a1a60c24eac6f205d487f2ea.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://pistol/muzzle_flash/muzzle_flash.png"
|
||||
dest_files=["res://.godot/imported/muzzle_flash.png-752b19c1a1a60c24eac6f205d487f2ea.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
|
||||
12
pistol/muzzle_flash/muzzle_flash.tscn
Normal file
@@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c1b2kbuq1if08"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://beuxhimda3hkr" path="res://pistol/muzzle_flash/muzzle_flash.gd" id="1_wouey"]
|
||||
[ext_resource type="Texture2D" uid="uid://brgpjilf7s2ul" path="res://pistol/muzzle_flash/muzzle_flash.png" id="2_6pgu4"]
|
||||
|
||||
[node name="MuzzleFlash" type="Node2D"]
|
||||
script = ExtResource("1_wouey")
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
texture = ExtResource("2_6pgu4")
|
||||
offset = Vector2(10, 0)
|
||||
BIN
pistol/pistol.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
34
pistol/pistol.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cswb5do8rrj7q"
|
||||
path="res://.godot/imported/pistol.png-ccb9a9487ce225cdf094ad33c19c2ede.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://pistol/pistol.png"
|
||||
dest_files=["res://.godot/imported/pistol.png-ccb9a9487ce225cdf094ad33c19c2ede.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
pistol/projectile.png
Normal file
|
After Width: | Height: | Size: 799 B |
34
pistol/projectile.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dftkbqwsfd68r"
|
||||
path="res://.godot/imported/projectile.png-e03ae856d530df914009475206433400.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://pistol/projectile.png"
|
||||
dest_files=["res://.godot/imported/projectile.png-e03ae856d530df914009475206433400.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
|
||||
24
player.gd
Normal file
@@ -0,0 +1,24 @@
|
||||
extends CharacterBody2D
|
||||
|
||||
signal health_depleted
|
||||
|
||||
var health = 100.0
|
||||
var move_speed := 400.0
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
var direction = Input.get_vector("move_left", "move_right", "move_up", "move_down")
|
||||
velocity = (direction * move_speed)
|
||||
move_and_slide()
|
||||
|
||||
if velocity.length() > 0.0:
|
||||
%HappyBoo.play_walk_animation()
|
||||
else:
|
||||
%HappyBoo.play_idle_animation()
|
||||
|
||||
const DAMAGE_RATE = 15.0
|
||||
var overlapping_mobs = %Hitbox.get_overlapping_bodies()
|
||||
if overlapping_mobs.size() > 0:
|
||||
health -= (DAMAGE_RATE * overlapping_mobs.size()) * delta
|
||||
%ProgressBar.value = health
|
||||
if health <= 0.0:
|
||||
health_depleted.emit()
|
||||
1
player.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://chd6vgc03ew6a
|
||||
63
player.tscn
Normal file
@@ -0,0 +1,63 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://4c77448gw84s"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://pbmyh1qru7p" path="res://characters/happy_boo/happy_boo.tscn" id="1_4flbx"]
|
||||
[ext_resource type="Script" uid="uid://chd6vgc03ew6a" path="res://player.gd" id="1_onrkg"]
|
||||
[ext_resource type="PackedScene" uid="uid://daagdf86t4bjn" path="res://gun.tscn" id="3_i3pqv"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_onrkg"]
|
||||
radius = 30.0
|
||||
height = 96.0
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_i3pqv"]
|
||||
radius = 33.0
|
||||
height = 104.0
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i3pqv"]
|
||||
bg_color = Color(0.162066, 0.162066, 0.162065, 1)
|
||||
corner_radius_top_left = 6
|
||||
corner_radius_top_right = 6
|
||||
corner_radius_bottom_right = 6
|
||||
corner_radius_bottom_left = 6
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hqtel"]
|
||||
bg_color = Color(0.25499, 0.702712, 0.379593, 1)
|
||||
corner_radius_top_left = 6
|
||||
corner_radius_top_right = 6
|
||||
corner_radius_bottom_right = 6
|
||||
corner_radius_bottom_left = 6
|
||||
|
||||
[node name="Player" type="CharacterBody2D"]
|
||||
script = ExtResource("1_onrkg")
|
||||
|
||||
[node name="HappyBoo" parent="." instance=ExtResource("1_4flbx")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(-1, -37)
|
||||
shape = SubResource("CapsuleShape2D_onrkg")
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
|
||||
[node name="Gun" parent="." instance=ExtResource("3_i3pqv")]
|
||||
position = Vector2(-1, -37)
|
||||
|
||||
[node name="Hitbox" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
|
||||
position = Vector2(-1, -37)
|
||||
shape = SubResource("CapsuleShape2D_i3pqv")
|
||||
debug_color = Color(0.881613, 0.286763, 0.460338, 0.42)
|
||||
|
||||
[node name="ProgressBar" type="ProgressBar" parent="."]
|
||||
unique_name_in_owner = true
|
||||
offset_left = -53.0
|
||||
offset_top = -115.0
|
||||
offset_right = 55.0
|
||||
offset_bottom = -107.0
|
||||
theme_override_styles/background = SubResource("StyleBoxFlat_i3pqv")
|
||||
theme_override_styles/fill = SubResource("StyleBoxFlat_hqtel")
|
||||
value = 100.0
|
||||
show_percentage = false
|
||||
127
project.godot
Normal file
@@ -0,0 +1,127 @@
|
||||
; 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
|
||||
|
||||
[Asset_Placer]
|
||||
|
||||
Settings/Preview_Perspective=2
|
||||
Settings/Library_Save_File_Location=1
|
||||
Shortcuts/Change_Placement_Plane_Position=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":71,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Transform_Asset_Blueprint=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":69,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":82,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Select_Previous_Asset=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Select_Y_Z_Plane=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Select_X_Z_Plane=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":88,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Select_X_Y_Plane=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":67,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Reset_Transform=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":69,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Rotate_Asset_90_Degrees_Around_X=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Rotate_Asset_90_Degrees_Around_Y=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":83,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Rotate_Asset_90_Degrees_Around_Z=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Flip_Asset_On_X_Axis=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":49,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Flip_Asset_On_Y_Axis=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":50,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Flip_Asset_On_Z_Axis=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":51,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Settings/Shortcut_Shift_Rotation_Step=45.0
|
||||
Shortcuts/Rotate_Asset_Secondary_Step_Degrees_Around_X=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Rotate_Asset_Secondary_Step_Degrees_Around_Y=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":83,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Rotate_Asset_Secondary_Step_Degrees_Around_Z=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":true,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Double_Snap_Step=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":true,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Shortcuts/Halve_Snap_Step=Object(Shortcut,"resource_local_to_scene":false,"resource_name":"","events":[Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":true,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
],"script":null)
|
||||
|
||||
Settings/Use_Shift_instead_of_Alt=false
|
||||
Settings/Surface_Placement_Collision_Mask=4294967295
|
||||
Settings/Show_Tooltips=true
|
||||
|
||||
[application]
|
||||
|
||||
config/name="ShootahGame"
|
||||
run/main_scene="uid://b185yicmacoke"
|
||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1920
|
||||
window/size/viewport_height=1080
|
||||
window/stretch/mode="viewport"
|
||||
|
||||
[dotnet]
|
||||
|
||||
project/assembly_name="Getting started with Godot 4"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/colorpicker_presets/plugin.cfg")
|
||||
|
||||
[input]
|
||||
|
||||
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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
shoot={
|
||||
"deadzone": 0.25,
|
||||
"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,"location":0,"echo":false,"script":null)
|
||||
, 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":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)
|
||||
]
|
||||
}
|
||||
|
||||
[layer_names]
|
||||
|
||||
3d_physics/layer_2="player"
|
||||
BIN
smoke_explosion/circle_32.png
Normal file
|
After Width: | Height: | Size: 417 B |
34
smoke_explosion/circle_32.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cvmbm3sxj85fm"
|
||||
path="res://.godot/imported/circle_32.png-ff53eadac5c62484a55afe7e47d5145f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://smoke_explosion/circle_32.png"
|
||||
dest_files=["res://.godot/imported/circle_32.png-ff53eadac5c62484a55afe7e47d5145f.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
|
||||
8
smoke_explosion/smoke_explosion.gd
Normal file
@@ -0,0 +1,8 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
func _ready():
|
||||
%Smoke.material.set_shader_parameter("texture_offset", Vector2(randfn(0.0, 1.0), randfn(0.0, 1.0)))
|
||||
%AnimationPlayer.play("explosion")
|
||||
await %AnimationPlayer.animation_finished
|
||||
queue_free()
|
||||
1
smoke_explosion/smoke_explosion.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://qrh44gblhgir
|
||||
15
smoke_explosion/smoke_explosion.gdshader
Normal file
@@ -0,0 +1,15 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform sampler2D voronoi_sampler : repeat_enable;
|
||||
uniform sampler2D edge_curve;
|
||||
uniform float offset = 0.0;
|
||||
uniform vec2 texture_offset = vec2(0.0);
|
||||
uniform sampler2D color_gradient : source_color;
|
||||
|
||||
void fragment() {
|
||||
float voronoi = 1.0 - texture(voronoi_sampler, UV * 0.25 + texture_offset).x;
|
||||
float d = distance(UV, vec2(0.5)) * 2.0;
|
||||
float n_smooth_d = (voronoi * offset) * texture(edge_curve, vec2(d, 0.0)).x;
|
||||
COLOR.a *= step(0.5, n_smooth_d);
|
||||
COLOR.rgb = texture(color_gradient, vec2(n_smooth_d, 0.0)).rgb;
|
||||
}
|
||||
1
smoke_explosion/smoke_explosion.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dnum4fa7v8hu
|
||||
150
smoke_explosion/smoke_explosion.tscn
Normal file
@@ -0,0 +1,150 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://dhmhmrth6rdce"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://dnum4fa7v8hu" path="res://smoke_explosion/smoke_explosion.gdshader" id="1_bmef6"]
|
||||
[ext_resource type="Script" uid="uid://qrh44gblhgir" path="res://smoke_explosion/smoke_explosion.gd" id="1_kb8ql"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_obal6"]
|
||||
interpolation_mode = 1
|
||||
offsets = PackedFloat32Array(0.105691, 0.7)
|
||||
colors = PackedColorArray(0.878431, 0.878431, 0.878431, 1, 0.878431, 0.878431, 0.878431, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_mxd0d"]
|
||||
gradient = SubResource("Gradient_obal6")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_aov55"]
|
||||
_data = [Vector2(0.752381, 1), 0.0, -4.03846, 0, 1, Vector2(1, 0), -4.03846, 0.0, 1, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_p664q"]
|
||||
texture_mode = 1
|
||||
curve = SubResource("Curve_aov55")
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_ti4n0"]
|
||||
noise_type = 2
|
||||
fractal_octaves = 1
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_uji5e"]
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_ti4n0")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dssfe"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("1_bmef6")
|
||||
shader_parameter/voronoi_sampler = SubResource("NoiseTexture2D_uji5e")
|
||||
shader_parameter/edge_curve = SubResource("CurveTexture_p664q")
|
||||
shader_parameter/offset = 2.0
|
||||
shader_parameter/texture_offset = Vector2(0, 0)
|
||||
shader_parameter/color_gradient = SubResource("GradientTexture1D_mxd0d")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6fv2e"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Smoke:material:shader_parameter/offset")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [2.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Smoke:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Smoke:modulate")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(0.396078, 0.396078, 0.396078, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_viyco"]
|
||||
resource_name = "explosion"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Smoke:material:shader_parameter/offset")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [2.0, 0.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Smoke:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(3, 3)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Smoke:modulate:a")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0.1, 0.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [1.0, 0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_8msef"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_6fv2e"),
|
||||
&"explosion": SubResource("Animation_viyco")
|
||||
}
|
||||
|
||||
[node name="SmokeExplosion" type="Node2D"]
|
||||
z_index = 10
|
||||
script = ExtResource("1_kb8ql")
|
||||
|
||||
[node name="Smoke" type="ColorRect" parent="."]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(0.396078, 0.396078, 0.396078, 1)
|
||||
material = SubResource("ShaderMaterial_dssfe")
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -64.0
|
||||
offset_top = -64.0
|
||||
offset_right = 64.0
|
||||
offset_bottom = 64.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
pivot_offset = Vector2(64, 64)
|
||||
color = Color(0.568627, 0.568627, 0.568627, 1)
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
autoplay = "RESET"
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_8msef")
|
||||
}
|
||||
24
static_pine_tree.tscn
Normal file
@@ -0,0 +1,24 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://beit5tp4qdcsg"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="1_4ec4t"]
|
||||
[ext_resource type="Texture2D" uid="uid://caqfk2xng5v5u" path="res://trees/pine_tree.png" id="2_fou4c"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dtvk7"]
|
||||
radius = 16.0
|
||||
height = 48.0
|
||||
|
||||
[node name="StaticPineTree" type="StaticBody2D"]
|
||||
|
||||
[node name="GroundShadow" type="Sprite2D" parent="."]
|
||||
modulate = Color(0.299547, 0.299547, 0.299547, 1)
|
||||
position = Vector2(0.562503, -9)
|
||||
scale = Vector2(0.819941, 0.692308)
|
||||
texture = ExtResource("1_4ec4t")
|
||||
|
||||
[node name="PineTree" type="Sprite2D" parent="."]
|
||||
position = Vector2(0, -75)
|
||||
texture = ExtResource("2_fou4c")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(1, -22)
|
||||
shape = SubResource("CapsuleShape2D_dtvk7")
|
||||
24
survivors_game.gd
Normal file
@@ -0,0 +1,24 @@
|
||||
extends Node2D
|
||||
|
||||
func _ready():
|
||||
spawn_monster()
|
||||
spawn_monster()
|
||||
spawn_monster()
|
||||
spawn_monster()
|
||||
spawn_monster()
|
||||
%SpawnTimer.start()
|
||||
|
||||
func spawn_monster():
|
||||
var new_monster = preload("res://monster.tscn").instantiate()
|
||||
%PathFollow2D.progress_ratio = randf()
|
||||
new_monster.global_position = %PathFollow2D.global_position
|
||||
add_child(new_monster)
|
||||
|
||||
|
||||
func _on_spawn_timer_timeout() -> void:
|
||||
spawn_monster()
|
||||
|
||||
|
||||
func _on_player_health_depleted() -> void:
|
||||
%GameoverCanvasLayer.visible = true
|
||||
get_tree().paused = true
|
||||
1
survivors_game.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dw0g2r5t2fe8r
|
||||
106
survivors_game.tscn
Normal file
@@ -0,0 +1,106 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b185yicmacoke"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dw0g2r5t2fe8r" path="res://survivors_game.gd" id="1_qqaft"]
|
||||
[ext_resource type="PackedScene" uid="uid://4c77448gw84s" path="res://player.tscn" id="1_y3pti"]
|
||||
[ext_resource type="PackedScene" uid="uid://beit5tp4qdcsg" path="res://static_pine_tree.tscn" id="2_l26od"]
|
||||
|
||||
[sub_resource type="Curve2D" id="Curve2D_7jj1j"]
|
||||
_data = {
|
||||
"points": PackedVector2Array(0, 0, 0, 0, -114, -125, 0, 0, 0, 0, 2103, -120, 0, 0, 0, 0, 2095, 1198, 0, 0, 0, 0, -108, 1196, 0, 0, 0, 0, -114, -125)
|
||||
}
|
||||
point_count = 5
|
||||
|
||||
[node name="Game" type="Node2D"]
|
||||
y_sort_enabled = true
|
||||
script = ExtResource("1_qqaft")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
layer = -1
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
||||
offset_left = -12.0
|
||||
offset_top = -9.0
|
||||
offset_right = 2000.0
|
||||
offset_bottom = 1106.0
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("1_y3pti")]
|
||||
position = Vector2(1003, 549)
|
||||
|
||||
[node name="Path2D" type="Path2D" parent="Player"]
|
||||
position = Vector2(-1003, -549)
|
||||
curve = SubResource("Curve2D_7jj1j")
|
||||
|
||||
[node name="PathFollow2D" type="PathFollow2D" parent="Player/Path2D"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(-114, -125)
|
||||
rotation = 0.0022553
|
||||
|
||||
[node name="StaticPineTree" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(258, 872)
|
||||
|
||||
[node name="StaticPineTree2" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(600, 219)
|
||||
|
||||
[node name="StaticPineTree3" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1487, 878)
|
||||
|
||||
[node name="StaticPineTree4" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1581, 775)
|
||||
|
||||
[node name="StaticPineTree5" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1640, 872)
|
||||
|
||||
[node name="StaticPineTree6" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1382, 221)
|
||||
|
||||
[node name="StaticPineTree7" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1471, 270)
|
||||
|
||||
[node name="StaticPineTree8" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1783, 516)
|
||||
|
||||
[node name="StaticPineTree9" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(266, 506)
|
||||
|
||||
[node name="StaticPineTree10" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(772, 680)
|
||||
|
||||
[node name="StaticPineTree11" parent="." instance=ExtResource("2_l26od")]
|
||||
position = Vector2(1250, 380)
|
||||
|
||||
[node name="SpawnTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="GameoverCanvasLayer" type="CanvasLayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="GameoverCanvasLayer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -191.0
|
||||
offset_top = -61.0
|
||||
offset_right = 191.0
|
||||
offset_bottom = 61.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.0588235, 0.0588235, 0.0588235, 0.501961)
|
||||
|
||||
[node name="Label" type="Label" parent="GameoverCanvasLayer"]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -391.0
|
||||
offset_top = -98.5
|
||||
offset_right = 391.0
|
||||
offset_bottom = 98.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_font_sizes/font_size = 144
|
||||
text = "Game Over"
|
||||
|
||||
[connection signal="health_depleted" from="Player" to="." method="_on_player_health_depleted"]
|
||||
[connection signal="timeout" from="SpawnTimer" to="." method="_on_spawn_timer_timeout"]
|
||||
BIN
trees/pine_tree.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
trees/pine_tree.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://caqfk2xng5v5u"
|
||||
path="res://.godot/imported/pine_tree.png-d61929395d8fbd7dd9882891dc69101d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://trees/pine_tree.png"
|
||||
dest_files=["res://.godot/imported/pine_tree.png-d61929395d8fbd7dd9882891dc69101d.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
|
||||