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"]
|
||||
|
||||
[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"]
|
||||
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"]
|
||||
|
||||
[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://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"]
|
||||
|
|
|
@ -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"]
|
||||
|
||||
[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"]
|
||||
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"]
|
||||
|
||||
[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"]
|
||||
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/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
|
|
|
@ -18,6 +18,7 @@ nodes/root_name=""
|
|||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=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"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bu4dwr7l6pwcv"
|
||||
path="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex"
|
||||
path.s3tc="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
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]
|
||||
|
||||
compress/mode=0
|
||||
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=false
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
|
@ -31,4 +32,4 @@ 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
|
||||
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"]
|
||||
|
||||
[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")]
|
||||
script = ExtResource("1_d112a")
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
class_name Level
|
||||
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="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="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="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"]
|
||||
sky_top_color = Color(0.270389, 0.858166, 0.929253, 1)
|
||||
|
@ -33,18 +42,19 @@ resource_local_to_scene = true
|
|||
shading_mode = 0
|
||||
albedo_color = Color(0.916968, 0.113727, 0, 1)
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_roqf0"]
|
||||
size = Vector2(32, 32)
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_25rxq"]
|
||||
size = Vector3(32, 1, 32)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("6_ka4lg")
|
||||
shader_parameter/albedo_texture = ExtResource("7_3jvq7")
|
||||
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
||||
shader_parameter/uv_scale = Vector2(0.5, 0.5)
|
||||
shader_parameter/albedo_texture = ExtResource("7_3jvq7")
|
||||
|
||||
[node name="Level" type="Node3D"]
|
||||
script = ExtResource("1_r1ilo")
|
||||
info = SubResource("Resource_qskty")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
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)
|
||||
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="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
|
||||
use_collision = true
|
||||
collision_mask = 0
|
||||
mesh = SubResource("PlaneMesh_roqf0")
|
||||
mesh = SubResource("BoxMesh_25rxq")
|
||||
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:
|
||||
_pole_stored_speed = flatten_vector(velocity).length()
|
||||
velocity = Vector3.ZERO
|
||||
floor_snap_length = 0.0
|
||||
var pole_xz = flatten_vector(_attached_pole.global_position)
|
||||
var self_xz = flatten_vector(global_position)
|
||||
_pole_angle = Vector3.FORWARD.angle_to(self_xz - pole_xz)
|
||||
|
||||
func _process_pole_spin(delta: float) -> void:
|
||||
var speed_factor = inverse_lerp(0.0, power_scale, _pole_stored_speed)
|
||||
# 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,
|
||||
_attached_pole.global_position.y,
|
||||
|
@ -182,7 +184,7 @@ func _process_pole_spin(delta: float) -> void:
|
|||
)
|
||||
|
||||
# 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 self_dir = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle)
|
||||
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
|
||||
velocity.x = impulse.x
|
||||
velocity.z = impulse.z
|
||||
floor_snap_length = 0.1
|
||||
#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"]
|
||||
|
||||
[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="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" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"]
|
||||
[ext_resource type="Script" uid="uid://dsjiox4ahsvqn" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"]
|
||||
[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://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="Script" 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://clasig0wood63" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"]
|
||||
[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"]
|
||||
interpolation_mode = 2
|
||||
|
@ -52,7 +52,7 @@ resource_name = "Not Moving"
|
|||
script = ExtResource("8_d5slg")
|
||||
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_physics_priority = -100
|
||||
collision_layer = 16
|
||||
|
@ -87,7 +87,7 @@ shape = SubResource("SphereShape3D_4o01j")
|
|||
[node name="Graphics" type="Node3D" parent="."]
|
||||
|
||||
[node name="CannySprite" type="Sprite3D" parent="Graphics"]
|
||||
pixel_size = 0.0156
|
||||
pixel_size = 0.0313
|
||||
billboard = 1
|
||||
texture_filter = 0
|
||||
texture = ExtResource("1_cp4br")
|
||||
|
@ -136,7 +136,7 @@ mesh = SubResource("CylinderMesh_b16dl")
|
|||
[node name="CameraArm" type="SpringArm3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, 0, 0, 0)
|
||||
collision_mask = 8
|
||||
spring_length = 8.0
|
||||
spring_length = 7.0
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="CameraArm"]
|
||||
current = true
|
||||
|
@ -213,9 +213,9 @@ delay_in_seconds = "0.0"
|
|||
[connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" 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/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="_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="Sounds/ChargeStart" method="play"]
|
||||
[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"]
|
||||
|
||||
[ext_resource type="Script" 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="Script" uid="uid://dbec3pvrmeehx" path="res://objects/goal_post.gd" id="1_08x2x"]
|
||||
[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="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"]
|
||||
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"]
|
||||
|
||||
[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="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"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_2mr0t")
|
||||
shader_parameter/albedo_texture = ExtResource("1_yg8om")
|
||||
shader_parameter/horizontal_uv_offset = Vector2(0, 0)
|
||||
shader_parameter/uv_scale = Vector2(1, 1)
|
||||
shader_parameter/albedo_texture = ExtResource("1_yg8om")
|
||||
|
||||
[node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")]
|
||||
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"]
|
||||
|
||||
[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="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"]
|
||||
|
||||
[ext_resource type="Script" 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="Script" uid="uid://gqdkco5gmxpu" path="res://objects/waterman_pole.gd" id="1_8whes"]
|
||||
[ext_resource type="Shader" uid="uid://2vowejmm8ams" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2dh7w"]
|
||||
render_priority = 0
|
||||
|
|
|
@ -11,8 +11,8 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="ucg-3d"
|
||||
run/main_scene="res://test_scene.tscn"
|
||||
config/features=PackedStringArray("4.3", "GL Compatibility")
|
||||
run/main_scene="uid://bkas0lj53glkn"
|
||||
config/features=PackedStringArray("4.4", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
@ -36,6 +36,7 @@ import/blender/enabled=false
|
|||
[global_group]
|
||||
|
||||
friction_floor=""
|
||||
chaser_target="Targets that chaser enemies will lock on to."
|
||||
|
||||
[input]
|
||||
|
||||
|
@ -51,6 +52,7 @@ charge_shot={
|
|||
3d_physics/layer_2="friction"
|
||||
3d_physics/layer_3="water"
|
||||
3d_physics/layer_5="player"
|
||||
3d_physics/layer_6="uncanny"
|
||||
|
||||
[rendering]
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue