Compare commits
4 commits
fd3facb076
...
8165cda61c
Author | SHA1 | Date | |
---|---|---|---|
8165cda61c | |||
ab2d42ccd9 | |||
c18a7746f7 | |||
606fb98afc |
76 changed files with 552 additions and 42 deletions
1
addons/godot_state_charts/all_of_guard.gd.uid
Normal file
1
addons/godot_state_charts/all_of_guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://2pwfgn2flltv
|
1
addons/godot_state_charts/animation_player_state.gd.uid
Normal file
1
addons/godot_state_charts/animation_player_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://crxj3l27001sa
|
1
addons/godot_state_charts/animation_tree_state.gd.uid
Normal file
1
addons/godot_state_charts/animation_tree_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://kp3w6nr5fvhg
|
1
addons/godot_state_charts/any_of_guard.gd.uid
Normal file
1
addons/godot_state_charts/any_of_guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://c0dlakdcpci0o
|
1
addons/godot_state_charts/atomic_state.gd.uid
Normal file
1
addons/godot_state_charts/atomic_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://kctk5uejlaoh
|
1
addons/godot_state_charts/compound_state.gd.uid
Normal file
1
addons/godot_state_charts/compound_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://1csmnvxpk1j3
|
1
addons/godot_state_charts/debug_util.gd.uid
Normal file
1
addons/godot_state_charts/debug_util.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://1x6hwwkl021m
|
1
addons/godot_state_charts/expression_guard.gd.uid
Normal file
1
addons/godot_state_charts/expression_guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://m32s76pjucg7
|
1
addons/godot_state_charts/expression_util.gd.uid
Normal file
1
addons/godot_state_charts/expression_util.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://4f7muthq014i
|
1
addons/godot_state_charts/godot_state_charts.gd.uid
Normal file
1
addons/godot_state_charts/godot_state_charts.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://cje5ay4xktxgv
|
1
addons/godot_state_charts/guard.gd.uid
Normal file
1
addons/godot_state_charts/guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://7byord465lig
|
1
addons/godot_state_charts/history_state.gd.uid
Normal file
1
addons/godot_state_charts/history_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://2weu7mtvi6em
|
1
addons/godot_state_charts/not_guard.gd.uid
Normal file
1
addons/godot_state_charts/not_guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://7wsknicmgrql
|
1
addons/godot_state_charts/parallel_state.gd.uid
Normal file
1
addons/godot_state_charts/parallel_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://baiit8725r4cs
|
1
addons/godot_state_charts/saved_state.gd.uid
Normal file
1
addons/godot_state_charts/saved_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://buwudikx3c5vx
|
1
addons/godot_state_charts/state_chart.gd.uid
Normal file
1
addons/godot_state_charts/state_chart.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dsjiox4ahsvqn
|
1
addons/godot_state_charts/state_chart_state.gd.uid
Normal file
1
addons/godot_state_charts/state_chart_state.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dbbk2a6bon8v0
|
1
addons/godot_state_charts/state_is_active_guard.gd.uid
Normal file
1
addons/godot_state_charts/state_is_active_guard.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://bq013yyrrbvnm
|
1
addons/godot_state_charts/transition.gd.uid
Normal file
1
addons/godot_state_charts/transition.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://clasig0wood63
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bde4yjgbmjn5y
|
|
@ -0,0 +1 @@
|
||||||
|
uid://fkbjjsmb60j6
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://donfbhh5giyfy"]
|
[gd_scene load_steps=2 format=3 uid="uid://donfbhh5giyfy"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"]
|
[ext_resource type="Script" uid="uid://fkbjjsmb60j6" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"]
|
||||||
|
|
||||||
[node name="State Charts" type="VBoxContainer"]
|
[node name="State Charts" type="VBoxContainer"]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dvu74pnu5lwbq
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dyc5byyhwbnr0
|
|
@ -0,0 +1 @@
|
||||||
|
uid://c7i62ol7vk1se
|
|
@ -0,0 +1 @@
|
||||||
|
uid://ble5gksncbe7n
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cm44gvum3wl0i
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cm6kei7xi15jq
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=8 format=3 uid="uid://bephgxrkhh3e2"]
|
[gd_scene load_steps=8 format=3 uid="uid://bephgxrkhh3e2"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"]
|
[ext_resource type="Script" uid="uid://cm6kei7xi15jq" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c4ojtah20jtxc" path="res://addons/godot_state_charts/atomic_state.svg" id="2_0k4pg"]
|
[ext_resource type="Texture2D" uid="uid://c4ojtah20jtxc" path="res://addons/godot_state_charts/atomic_state.svg" id="2_0k4pg"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bbudjoa3ds4qj" path="res://addons/godot_state_charts/compound_state.svg" id="3_b4okj"]
|
[ext_resource type="Texture2D" uid="uid://bbudjoa3ds4qj" path="res://addons/godot_state_charts/compound_state.svg" id="3_b4okj"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dsa1nco51br8d" path="res://addons/godot_state_charts/parallel_state.svg" id="4_lmfic"]
|
[ext_resource type="Texture2D" uid="uid://dsa1nco51br8d" path="res://addons/godot_state_charts/parallel_state.svg" id="4_lmfic"]
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bx78qgbch2n2w
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bnflganrjhst8
|
|
@ -0,0 +1 @@
|
||||||
|
uid://ce8s0mg7ebk3f
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://cvlabg8e2qbk3"]
|
[gd_scene load_steps=2 format=3 uid="uid://cvlabg8e2qbk3"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"]
|
[ext_resource type="Script" uid="uid://ce8s0mg7ebk3f" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"]
|
||||||
|
|
||||||
[node name="event_refactor" type="ConfirmationDialog"]
|
[node name="event_refactor" type="ConfirmationDialog"]
|
||||||
initial_position = 1
|
initial_position = 1
|
||||||
|
|
1
addons/godot_state_charts/utilities/ring_buffer.gd.uid
Normal file
1
addons/godot_state_charts/utilities/ring_buffer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://imce1qdnxl8n
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b8ollw5mltgtm
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://bcwkugn6v3oy7"]
|
[gd_scene load_steps=2 format=3 uid="uid://bcwkugn6v3oy7"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"]
|
[ext_resource type="Script" uid="uid://b8ollw5mltgtm" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"]
|
||||||
|
|
||||||
[node name="StateChartDebugger" type="MarginContainer"]
|
[node name="StateChartDebugger" type="MarginContainer"]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bjmsdtahinvlk
|
Binary file not shown.
|
@ -18,6 +18,7 @@ nodes/root_name=""
|
||||||
nodes/apply_root_scale=true
|
nodes/apply_root_scale=true
|
||||||
nodes/root_scale=1.0
|
nodes/root_scale=1.0
|
||||||
nodes/import_as_skeleton_bones=false
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
meshes/ensure_tangents=true
|
meshes/ensure_tangents=true
|
||||||
meshes/generate_lods=true
|
meshes/generate_lods=true
|
||||||
meshes/create_shadow_meshes=true
|
meshes/create_shadow_meshes=true
|
||||||
|
|
|
@ -18,6 +18,7 @@ nodes/root_name=""
|
||||||
nodes/apply_root_scale=true
|
nodes/apply_root_scale=true
|
||||||
nodes/root_scale=1.0
|
nodes/root_scale=1.0
|
||||||
nodes/import_as_skeleton_bones=false
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
meshes/ensure_tangents=true
|
meshes/ensure_tangents=true
|
||||||
meshes/generate_lods=true
|
meshes/generate_lods=true
|
||||||
meshes/create_shadow_meshes=true
|
meshes/create_shadow_meshes=true
|
||||||
|
|
Binary file not shown.
1
assets/shaders/barber_shop.gdshader.uid
Normal file
1
assets/shaders/barber_shop.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://2vowejmm8ams
|
1
assets/shaders/confetti_spin.gdshader.uid
Normal file
1
assets/shaders/confetti_spin.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://bwh16agcnae24
|
1
assets/shaders/flag.gdshader.uid
Normal file
1
assets/shaders/flag.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://bk3ssuhuvbahl
|
1
assets/shaders/horizontal_world_uv.gdshader.uid
Normal file
1
assets/shaders/horizontal_world_uv.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://c3y1ht34ep01k
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bu4dwr7l6pwcv"
|
uid="uid://bu4dwr7l6pwcv"
|
||||||
path="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex"
|
path.s3tc="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/textures/chaser/gskin0.png"
|
source_file="res://assets/textures/chaser/gskin0.png"
|
||||||
dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex"]
|
dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
BIN
assets/textures/chaser/uncanny.png
Normal file
BIN
assets/textures/chaser/uncanny.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
35
assets/textures/chaser/uncanny.png.import
Normal file
35
assets/textures/chaser/uncanny.png.import
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c2a63sfnh6il"
|
||||||
|
path.s3tc="res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/textures/chaser/uncanny.png"
|
||||||
|
dest_files=["res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
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=0
|
Binary file not shown.
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 4.4 KiB |
1
autoloads/scene_manager.gd.uid
Normal file
1
autoloads/scene_manager.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dno6wobc85qrw
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"]
|
[gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://autoloads/scene_manager.gd" id="1_d112a"]
|
[ext_resource type="Script" uid="uid://dno6wobc85qrw" path="res://autoloads/scene_manager.gd" id="1_d112a"]
|
||||||
|
|
||||||
[node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")]
|
[node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")]
|
||||||
script = ExtResource("1_d112a")
|
script = ExtResource("1_d112a")
|
||||||
|
|
|
@ -1,2 +1,12 @@
|
||||||
class_name Level
|
class_name Level
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
|
|
||||||
|
@export var info: LevelInfo
|
||||||
|
|
||||||
|
|
||||||
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
|
if event is InputEventKey:
|
||||||
|
if event.keycode == KEY_R and event.pressed:
|
||||||
|
var new_level = load(scene_file_path).instantiate()
|
||||||
|
SceneManager.change_scene(new_level)
|
||||||
|
|
1
levels/level.gd.uid
Normal file
1
levels/level.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://vydhlp6ju8bw
|
6
levels/level_info.gd
Normal file
6
levels/level_info.gd
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
class_name LevelInfo
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
|
||||||
|
@export var title: String
|
||||||
|
@export_range(1,5,1) var difficulty: int = 1
|
1
levels/level_info.gd.uid
Normal file
1
levels/level_info.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://hmtamckjm4vm
|
47
levels/level_set.gd
Normal file
47
levels/level_set.gd
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
@tool
|
||||||
|
class_name LevelSet
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
|
||||||
|
@export var title: String
|
||||||
|
@export_tool_button("Update Levels") var _update_action = update_level_info
|
||||||
|
@export_dir var levels_dir: String:
|
||||||
|
set(value):
|
||||||
|
levels_dir = value
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
update_level_info()
|
||||||
|
@export var levels: Array[LevelEntry] = []
|
||||||
|
|
||||||
|
|
||||||
|
func update_level_info():
|
||||||
|
levels.clear()
|
||||||
|
if levels_dir.is_empty() or not DirAccess.dir_exists_absolute(levels_dir):
|
||||||
|
notify_property_list_changed()
|
||||||
|
return
|
||||||
|
|
||||||
|
var dir = DirAccess.open(levels_dir)
|
||||||
|
var files = Array(dir.get_files()).filter(
|
||||||
|
func(path: String):
|
||||||
|
return path.ends_with(".tscn") or path.ends_with(".scn")
|
||||||
|
) as Array[String]
|
||||||
|
|
||||||
|
for file in files:
|
||||||
|
var packed_scene = load(levels_dir + "/" + file) as PackedScene
|
||||||
|
if packed_scene:
|
||||||
|
var level = packed_scene.instantiate()
|
||||||
|
if level is Level:
|
||||||
|
var entry = LevelEntry.new()
|
||||||
|
entry.resource_name = level.info.title
|
||||||
|
entry.info = level.info
|
||||||
|
entry.scene = packed_scene
|
||||||
|
levels.append(entry)
|
||||||
|
level.free()
|
||||||
|
|
||||||
|
notify_property_list_changed()
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
ResourceSaver.save(self, resource_path)
|
||||||
|
|
||||||
|
|
||||||
|
class LevelEntry extends Resource:
|
||||||
|
@export var info: LevelInfo
|
||||||
|
@export var scene: PackedScene
|
1
levels/level_set.gd.uid
Normal file
1
levels/level_set.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://pgfv21pnsipl
|
65
levels/w1.tres
Normal file
65
levels/w1.tres
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
[gd_resource type="Resource" script_class="LevelSet" load_steps=16 format=3 uid="uid://btw8hqdurtu4l"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="1_aabai"]
|
||||||
|
[ext_resource type="Script" uid="uid://pgfv21pnsipl" path="res://levels/level_set.gd" id="1_wemf7"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bkas0lj53glkn" path="res://levels/w1/1_01.tscn" id="2_e78ac"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://w0nd4xra2jf1" path="res://levels/w1/1_02.tscn" id="3_t0snc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://brskrrxg5v5wq" path="res://levels/w1/1_03.tscn" id="4_argu4"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://3ck33ekhtriv" path="res://levels/w1/1_04.scn" id="5_qkhto"]
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_ue4o7"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_qskty"]
|
||||||
|
script = ExtResource("1_aabai")
|
||||||
|
title = "Welcome To Poo Central!"
|
||||||
|
difficulty = 1
|
||||||
|
metadata/_custom_type_script = "uid://hmtamckjm4vm"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ymcbg"]
|
||||||
|
resource_name = "Welcome To Golf Central!"
|
||||||
|
script = SubResource("GDScript_ue4o7")
|
||||||
|
info = SubResource("Resource_qskty")
|
||||||
|
scene = ExtResource("2_e78ac")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_4m1at"]
|
||||||
|
script = ExtResource("1_aabai")
|
||||||
|
title = "Oogly Goo"
|
||||||
|
difficulty = 2
|
||||||
|
metadata/_custom_type_script = "uid://hmtamckjm4vm"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_604lb"]
|
||||||
|
resource_name = "Oogly Goo"
|
||||||
|
script = SubResource("GDScript_ue4o7")
|
||||||
|
info = SubResource("Resource_4m1at")
|
||||||
|
scene = ExtResource("3_t0snc")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_108v6"]
|
||||||
|
script = ExtResource("1_aabai")
|
||||||
|
title = "Number Three!"
|
||||||
|
difficulty = 5
|
||||||
|
metadata/_custom_type_script = "uid://hmtamckjm4vm"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_4ntyl"]
|
||||||
|
resource_name = "Number Three!"
|
||||||
|
script = SubResource("GDScript_ue4o7")
|
||||||
|
info = SubResource("Resource_108v6")
|
||||||
|
scene = ExtResource("4_argu4")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ra4qo"]
|
||||||
|
script = ExtResource("1_aabai")
|
||||||
|
title = "Foursyies"
|
||||||
|
difficulty = 3
|
||||||
|
metadata/_custom_type_script = "uid://hmtamckjm4vm"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_0h8e4"]
|
||||||
|
resource_name = "Foursyies"
|
||||||
|
script = SubResource("GDScript_ue4o7")
|
||||||
|
info = SubResource("Resource_ra4qo")
|
||||||
|
scene = ExtResource("5_qkhto")
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_wemf7")
|
||||||
|
title = "Golf Central"
|
||||||
|
levels_dir = "res://levels/w1"
|
||||||
|
levels = Array[SubResource("GDScript_ue4o7")]([SubResource("Resource_ymcbg"), SubResource("Resource_604lb"), SubResource("Resource_4ntyl"), SubResource("Resource_0h8e4")])
|
||||||
|
metadata/_custom_type_script = "uid://pgfv21pnsipl"
|
|
@ -1,12 +1,21 @@
|
||||||
[gd_scene load_steps=14 format=3 uid="uid://bkas0lj53glkn"]
|
[gd_scene load_steps=18 format=3 uid="uid://bkas0lj53glkn"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://levels/level.gd" id="1_r1ilo"]
|
[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_r1ilo"]
|
||||||
|
[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_61qek"]
|
||||||
[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_81akk"]
|
[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_81akk"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="4_emyyh"]
|
[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="4_emyyh"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="5_oq0l4"]
|
[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="5_oq0l4"]
|
||||||
[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"]
|
[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"]
|
[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"]
|
[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bndtsprfwrkau" path="res://objects/uncanny_cat.tscn" id="7_qskty"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://13qlrib2dk36" path="res://objects/waterman_pole.tscn" id="10_qrwyj"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_qskty"]
|
||||||
|
script = ExtResource("2_61qek")
|
||||||
|
title = "Welcome To Golf Central!"
|
||||||
|
difficulty = 1
|
||||||
|
metadata/_custom_type_script = "uid://hmtamckjm4vm"
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"]
|
||||||
sky_top_color = Color(0.270389, 0.858166, 0.929253, 1)
|
sky_top_color = Color(0.270389, 0.858166, 0.929253, 1)
|
||||||
|
@ -33,18 +42,19 @@ resource_local_to_scene = true
|
||||||
shading_mode = 0
|
shading_mode = 0
|
||||||
albedo_color = Color(0.916968, 0.113727, 0, 1)
|
albedo_color = Color(0.916968, 0.113727, 0, 1)
|
||||||
|
|
||||||
[sub_resource type="PlaneMesh" id="PlaneMesh_roqf0"]
|
[sub_resource type="BoxMesh" id="BoxMesh_25rxq"]
|
||||||
size = Vector2(32, 32)
|
size = Vector3(32, 1, 32)
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("6_ka4lg")
|
shader = ExtResource("6_ka4lg")
|
||||||
|
shader_parameter/albedo_texture = ExtResource("7_3jvq7")
|
||||||
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
||||||
shader_parameter/uv_scale = Vector2(0.5, 0.5)
|
shader_parameter/uv_scale = Vector2(0.5, 0.5)
|
||||||
shader_parameter/albedo_texture = ExtResource("7_3jvq7")
|
|
||||||
|
|
||||||
[node name="Level" type="Node3D"]
|
[node name="Level" type="Node3D"]
|
||||||
script = ExtResource("1_r1ilo")
|
script = ExtResource("1_r1ilo")
|
||||||
|
info = SubResource("Resource_qskty")
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_n6dij")
|
environment = SubResource("Environment_n6dij")
|
||||||
|
@ -85,8 +95,15 @@ polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6)
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995)
|
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995)
|
||||||
polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092)
|
polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092)
|
||||||
|
|
||||||
|
[node name="UncannyCat" parent="Objects" instance=ExtResource("7_qskty")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.89785, 0)
|
||||||
|
|
||||||
[node name="CSGMesh3D" type="CSGMesh3D" parent="."]
|
[node name="CSGMesh3D" type="CSGMesh3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
|
||||||
use_collision = true
|
use_collision = true
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
mesh = SubResource("PlaneMesh_roqf0")
|
mesh = SubResource("BoxMesh_25rxq")
|
||||||
material = SubResource("ShaderMaterial_tpmcl")
|
material = SubResource("ShaderMaterial_tpmcl")
|
||||||
|
|
||||||
|
[node name="WatermanPole" parent="." instance=ExtResource("10_qrwyj")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 4)
|
||||||
|
|
101
levels/w1/1_02.tscn
Normal file
101
levels/w1/1_02.tscn
Normal file
File diff suppressed because one or more lines are too long
101
levels/w1/1_03.tscn
Normal file
101
levels/w1/1_03.tscn
Normal file
File diff suppressed because one or more lines are too long
|
@ -168,13 +168,15 @@ var _pole_stored_speed: float = 0.0
|
||||||
func _start_pole_spin() -> void:
|
func _start_pole_spin() -> void:
|
||||||
_pole_stored_speed = flatten_vector(velocity).length()
|
_pole_stored_speed = flatten_vector(velocity).length()
|
||||||
velocity = Vector3.ZERO
|
velocity = Vector3.ZERO
|
||||||
|
floor_snap_length = 0.0
|
||||||
var pole_xz = flatten_vector(_attached_pole.global_position)
|
var pole_xz = flatten_vector(_attached_pole.global_position)
|
||||||
var self_xz = flatten_vector(global_position)
|
var self_xz = flatten_vector(global_position)
|
||||||
_pole_angle = Vector3.FORWARD.angle_to(self_xz - pole_xz)
|
_pole_angle = Vector3.FORWARD.angle_to(self_xz - pole_xz)
|
||||||
|
|
||||||
func _process_pole_spin(delta: float) -> void:
|
func _process_pole_spin(delta: float) -> void:
|
||||||
|
var speed_factor = inverse_lerp(0.0, power_scale, _pole_stored_speed)
|
||||||
# rise
|
# rise
|
||||||
global_position.y += _attached_pole.rise_speed * delta
|
global_position.y += lerpf(0.0, _attached_pole.rise_speed, speed_factor) * delta
|
||||||
global_position.y = clampf(
|
global_position.y = clampf(
|
||||||
global_position.y,
|
global_position.y,
|
||||||
_attached_pole.global_position.y,
|
_attached_pole.global_position.y,
|
||||||
|
@ -182,7 +184,7 @@ func _process_pole_spin(delta: float) -> void:
|
||||||
)
|
)
|
||||||
|
|
||||||
# spin
|
# spin
|
||||||
_pole_angle += _attached_pole.spin_speed * delta
|
_pole_angle += lerpf(0.0, _attached_pole.spin_speed, speed_factor) * delta
|
||||||
var pole_xz = flatten_vector(_attached_pole.global_position)
|
var pole_xz = flatten_vector(_attached_pole.global_position)
|
||||||
var self_dir = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle)
|
var self_dir = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle)
|
||||||
var self_xz = pole_xz + self_dir * _attached_pole.offset
|
var self_xz = pole_xz + self_dir * _attached_pole.offset
|
||||||
|
@ -194,6 +196,7 @@ func _end_pole_spin() -> void:
|
||||||
var impulse = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) * _pole_stored_speed
|
var impulse = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) * _pole_stored_speed
|
||||||
velocity.x = impulse.x
|
velocity.x = impulse.x
|
||||||
velocity.z = impulse.z
|
velocity.z = impulse.z
|
||||||
|
floor_snap_length = 0.1
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
1
objects/canny_cat.gd.uid
Normal file
1
objects/canny_cat.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://b04ridmyf6571
|
|
@ -1,17 +1,17 @@
|
||||||
[gd_scene load_steps=20 format=3 uid="uid://cybm74xwbsivx"]
|
[gd_scene load_steps=20 format=3 uid="uid://cybm74xwbsivx"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://3i17aqnrspma" path="res://assets/textures/player/canny.png" id="1_cp4br"]
|
[ext_resource type="Texture2D" uid="uid://3i17aqnrspma" path="res://assets/textures/player/canny.png" id="1_cp4br"]
|
||||||
[ext_resource type="Script" path="res://objects/canny_cat.gd" id="1_twfq8"]
|
[ext_resource type="Script" uid="uid://b04ridmyf6571" path="res://objects/canny_cat.gd" id="1_twfq8"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bqg7vd5r7w8tm" path="res://assets/textures/shadow.png" id="2_fwt6m"]
|
[ext_resource type="Texture2D" uid="uid://bqg7vd5r7w8tm" path="res://assets/textures/shadow.png" id="2_fwt6m"]
|
||||||
[ext_resource type="AudioStream" uid="uid://7u8a6osl4buo" path="res://assets/sounds/player/grab.ogg" id="4_hojxu"]
|
[ext_resource type="AudioStream" uid="uid://7u8a6osl4buo" path="res://assets/sounds/player/grab.ogg" id="4_hojxu"]
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"]
|
[ext_resource type="Script" uid="uid://dsjiox4ahsvqn" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"]
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"]
|
[ext_resource type="Script" uid="uid://1csmnvxpk1j3" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dis5fg68ese7r" path="res://assets/sounds/player/cancel.ogg" id="5_v6u4q"]
|
[ext_resource type="AudioStream" uid="uid://dis5fg68ese7r" path="res://assets/sounds/player/cancel.ogg" id="5_v6u4q"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dnyjfcq8m2r4f" path="res://assets/sounds/player/hit.ogg" id="6_a7neg"]
|
[ext_resource type="AudioStream" uid="uid://dnyjfcq8m2r4f" path="res://assets/sounds/player/hit.ogg" id="6_a7neg"]
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"]
|
[ext_resource type="Script" uid="uid://kctk5uejlaoh" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bv4plfa1oj3tf" path="res://assets/sounds/player/wall_bump.ogg" id="7_8ee3y"]
|
[ext_resource type="AudioStream" uid="uid://bv4plfa1oj3tf" path="res://assets/sounds/player/wall_bump.ogg" id="7_8ee3y"]
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"]
|
[ext_resource type="Script" uid="uid://clasig0wood63" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"]
|
||||||
[ext_resource type="Script" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"]
|
[ext_resource type="Script" uid="uid://m32s76pjucg7" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"]
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_u5ds4"]
|
[sub_resource type="Gradient" id="Gradient_u5ds4"]
|
||||||
interpolation_mode = 2
|
interpolation_mode = 2
|
||||||
|
@ -52,7 +52,7 @@ resource_name = "Not Moving"
|
||||||
script = ExtResource("8_d5slg")
|
script = ExtResource("8_d5slg")
|
||||||
expression = "velocity.is_zero_approx()"
|
expression = "velocity.is_zero_approx()"
|
||||||
|
|
||||||
[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape")]
|
[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape") groups=["chaser_target"]]
|
||||||
process_priority = -100
|
process_priority = -100
|
||||||
process_physics_priority = -100
|
process_physics_priority = -100
|
||||||
collision_layer = 16
|
collision_layer = 16
|
||||||
|
@ -87,7 +87,7 @@ shape = SubResource("SphereShape3D_4o01j")
|
||||||
[node name="Graphics" type="Node3D" parent="."]
|
[node name="Graphics" type="Node3D" parent="."]
|
||||||
|
|
||||||
[node name="CannySprite" type="Sprite3D" parent="Graphics"]
|
[node name="CannySprite" type="Sprite3D" parent="Graphics"]
|
||||||
pixel_size = 0.0156
|
pixel_size = 0.0313
|
||||||
billboard = 1
|
billboard = 1
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
texture = ExtResource("1_cp4br")
|
texture = ExtResource("1_cp4br")
|
||||||
|
@ -136,7 +136,7 @@ mesh = SubResource("CylinderMesh_b16dl")
|
||||||
[node name="CameraArm" type="SpringArm3D" parent="."]
|
[node name="CameraArm" type="SpringArm3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, 0, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, 0, 0, 0)
|
||||||
collision_mask = 8
|
collision_mask = 8
|
||||||
spring_length = 8.0
|
spring_length = 7.0
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="CameraArm"]
|
[node name="Camera3D" type="Camera3D" parent="CameraArm"]
|
||||||
current = true
|
current = true
|
||||||
|
@ -213,9 +213,9 @@ delay_in_seconds = "0.0"
|
||||||
[connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" method="play"]
|
[connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" method="play"]
|
||||||
[connection signal="shot" from="." to="Sounds/Shoot" method="play"]
|
[connection signal="shot" from="." to="Sounds/Shoot" method="play"]
|
||||||
[connection signal="state_physics_processing" from="StateChart/Root/Idle" to="." method="_apply_gravity"]
|
[connection signal="state_physics_processing" from="StateChart/Root/Idle" to="." method="_apply_gravity"]
|
||||||
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"]
|
|
||||||
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"]
|
|
||||||
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"]
|
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"]
|
||||||
|
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"]
|
||||||
|
[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"]
|
||||||
[connection signal="state_entered" from="StateChart/Root/Charging" to="." method="_start_charge"]
|
[connection signal="state_entered" from="StateChart/Root/Charging" to="." method="_start_charge"]
|
||||||
[connection signal="state_entered" from="StateChart/Root/Charging" to="Sounds/ChargeStart" method="play"]
|
[connection signal="state_entered" from="StateChart/Root/Charging" to="Sounds/ChargeStart" method="play"]
|
||||||
[connection signal="state_exited" from="StateChart/Root/Charging" to="." method="_end_charge"]
|
[connection signal="state_exited" from="StateChart/Root/Charging" to="." method="_end_charge"]
|
||||||
|
|
1
objects/goal_post.gd.uid
Normal file
1
objects/goal_post.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dbec3pvrmeehx
|
|
@ -1,9 +1,9 @@
|
||||||
[gd_scene load_steps=17 format=3 uid="uid://cdpgby3r6xe4n"]
|
[gd_scene load_steps=17 format=3 uid="uid://cdpgby3r6xe4n"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://objects/goal_post.gd" id="1_08x2x"]
|
[ext_resource type="Script" uid="uid://dbec3pvrmeehx" path="res://objects/goal_post.gd" id="1_08x2x"]
|
||||||
[ext_resource type="Shader" path="res://assets/shaders/flag.gdshader" id="2_xbid5"]
|
[ext_resource type="Shader" uid="uid://bk3ssuhuvbahl" path="res://assets/shaders/flag.gdshader" id="2_xbid5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cyxkbck2gs2wt" path="res://assets/textures/objects/goal_hole.png" id="3_yg6kd"]
|
[ext_resource type="Texture2D" uid="uid://cyxkbck2gs2wt" path="res://assets/textures/objects/goal_hole.png" id="3_yg6kd"]
|
||||||
[ext_resource type="Shader" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"]
|
[ext_resource type="Shader" uid="uid://bwh16agcnae24" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"]
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_lo531"]
|
[sub_resource type="Gradient" id="Gradient_lo531"]
|
||||||
interpolation_mode = 1
|
interpolation_mode = 1
|
||||||
|
|
1
objects/sand_pit.gd.uid
Normal file
1
objects/sand_pit.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://b7vjcer1ah68k
|
|
@ -1,15 +1,15 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://bfic5n608nc5j"]
|
[gd_scene load_steps=5 format=3 uid="uid://bfic5n608nc5j"]
|
||||||
|
|
||||||
[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"]
|
[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"]
|
||||||
[ext_resource type="Texture2D" uid="uid://djx2x3jjn01w2" path="res://assets/textures/world/sand.png" id="1_yg8om"]
|
[ext_resource type="Texture2D" uid="uid://djx2x3jjn01w2" path="res://assets/textures/world/sand.png" id="1_yg8om"]
|
||||||
[ext_resource type="Script" path="res://objects/sand_pit.gd" id="2_vtyum"]
|
[ext_resource type="Script" uid="uid://b7vjcer1ah68k" path="res://objects/sand_pit.gd" id="2_vtyum"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7s0pr"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7s0pr"]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_2mr0t")
|
shader = ExtResource("1_2mr0t")
|
||||||
|
shader_parameter/albedo_texture = ExtResource("1_yg8om")
|
||||||
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
||||||
shader_parameter/uv_scale = Vector2(1, 1)
|
shader_parameter/uv_scale = Vector2(1, 1)
|
||||||
shader_parameter/albedo_texture = ExtResource("1_yg8om")
|
|
||||||
|
|
||||||
[node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")]
|
[node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")]
|
||||||
process_physics_priority = 100
|
process_physics_priority = 100
|
||||||
|
|
1
objects/skull.gd.uid
Normal file
1
objects/skull.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://cg1ki7xt2uvjl
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=6 format=3 uid="uid://b4a8aif3iigdw"]
|
[gd_scene load_steps=6 format=3 uid="uid://b4a8aif3iigdw"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://objects/skull.gd" id="1_ledhy"]
|
[ext_resource type="Script" uid="uid://cg1ki7xt2uvjl" path="res://objects/skull.gd" id="1_ledhy"]
|
||||||
[ext_resource type="PackedScene" uid="uid://46kyrtlb6b0a" path="res://assets/models/enemies/boney.glb" id="2_lwsb0"]
|
[ext_resource type="PackedScene" uid="uid://46kyrtlb6b0a" path="res://assets/models/enemies/boney.glb" id="2_lwsb0"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cgotekctoej7m" path="res://assets/sounds/enemies/skull_death.ogg" id="3_6ybas"]
|
[ext_resource type="AudioStream" uid="uid://cgotekctoej7m" path="res://assets/sounds/enemies/skull_death.ogg" id="3_6ybas"]
|
||||||
|
|
||||||
|
|
26
objects/uncanny_cat.gd
Normal file
26
objects/uncanny_cat.gd
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
extends CharacterBody3D
|
||||||
|
|
||||||
|
|
||||||
|
@export var acceleration: float
|
||||||
|
@export var speed: float
|
||||||
|
@export var vertical_speed: float
|
||||||
|
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
var target: Node3D = null
|
||||||
|
for node in get_tree().get_nodes_in_group(&"chaser_target"):
|
||||||
|
if node is Node3D:
|
||||||
|
if not target or (
|
||||||
|
global_position.distance_squared_to(node.global_position) <
|
||||||
|
global_position.distance_squared_to(target.global_position)
|
||||||
|
):
|
||||||
|
target = node
|
||||||
|
|
||||||
|
if target:
|
||||||
|
velocity += global_position.direction_to(target.global_position) * acceleration * delta
|
||||||
|
velocity = velocity.limit_length(speed)
|
||||||
|
velocity.y = (target.global_position.y - global_position.y) * vertical_speed
|
||||||
|
|
||||||
|
var col = move_and_collide(velocity * delta)
|
||||||
|
if col:
|
||||||
|
velocity = velocity.bounce(col.get_normal())
|
1
objects/uncanny_cat.gd.uid
Normal file
1
objects/uncanny_cat.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://1mhmcaluavhg
|
47
objects/uncanny_cat.tscn
Normal file
47
objects/uncanny_cat.tscn
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[gd_scene load_steps=6 format=3 uid="uid://bndtsprfwrkau"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://1mhmcaluavhg" path="res://objects/uncanny_cat.gd" id="1_bsm3e"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c2a63sfnh6il" path="res://assets/textures/chaser/uncanny.png" id="2_eotxf"]
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_eotxf"]
|
||||||
|
radius = 0.45
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_eotxf"]
|
||||||
|
transparency = 3
|
||||||
|
alpha_hash_scale = 1.0
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
no_depth_test = true
|
||||||
|
shading_mode = 0
|
||||||
|
albedo_color = Color(1, 0, 0, 0.501961)
|
||||||
|
albedo_texture = ExtResource("2_eotxf")
|
||||||
|
texture_filter = 0
|
||||||
|
billboard_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_ixuei"]
|
||||||
|
|
||||||
|
[node name="UncannyCat" type="CharacterBody3D"]
|
||||||
|
collision_layer = 32
|
||||||
|
collision_mask = 32
|
||||||
|
motion_mode = 1
|
||||||
|
script = ExtResource("1_bsm3e")
|
||||||
|
acceleration = 0.6
|
||||||
|
speed = 1.5
|
||||||
|
vertical_speed = 0.5
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
shape = SubResource("SphereShape3D_eotxf")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
material_overlay = SubResource("StandardMaterial3D_eotxf")
|
||||||
|
pixel_size = 0.0313
|
||||||
|
billboard = 1
|
||||||
|
texture_filter = 0
|
||||||
|
texture = ExtResource("2_eotxf")
|
||||||
|
|
||||||
|
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||||
|
collision_layer = 0
|
||||||
|
collision_mask = 16
|
||||||
|
monitorable = false
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"]
|
||||||
|
shape = SubResource("SphereShape3D_ixuei")
|
1
objects/waterman_pole.gd.uid
Normal file
1
objects/waterman_pole.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://gqdkco5gmxpu
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=7 format=3 uid="uid://13qlrib2dk36"]
|
[gd_scene load_steps=7 format=3 uid="uid://13qlrib2dk36"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://objects/waterman_pole.gd" id="1_8whes"]
|
[ext_resource type="Script" uid="uid://gqdkco5gmxpu" path="res://objects/waterman_pole.gd" id="1_8whes"]
|
||||||
[ext_resource type="Shader" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"]
|
[ext_resource type="Shader" uid="uid://2vowejmm8ams" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2dh7w"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2dh7w"]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
|
|
|
@ -11,8 +11,8 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="ucg-3d"
|
config/name="ucg-3d"
|
||||||
run/main_scene="res://test_scene.tscn"
|
run/main_scene="uid://bkas0lj53glkn"
|
||||||
config/features=PackedStringArray("4.3", "GL Compatibility")
|
config/features=PackedStringArray("4.4", "GL Compatibility")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
@ -36,6 +36,7 @@ import/blender/enabled=false
|
||||||
[global_group]
|
[global_group]
|
||||||
|
|
||||||
friction_floor=""
|
friction_floor=""
|
||||||
|
chaser_target="Targets that chaser enemies will lock on to."
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
|
@ -51,6 +52,7 @@ charge_shot={
|
||||||
3d_physics/layer_2="friction"
|
3d_physics/layer_2="friction"
|
||||||
3d_physics/layer_3="water"
|
3d_physics/layer_3="water"
|
||||||
3d_physics/layer_5="player"
|
3d_physics/layer_5="player"
|
||||||
|
3d_physics/layer_6="uncanny"
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue