My first 3D game with Godot 4.4
4
.editorconfig
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
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/
|
||||||
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"godotTools.editorPath.godot4": "/home/elaina/.local/opt/godot4/Godot_v4.4.1-stable_linux.x86_64"
|
||||||
|
}
|
||||||
8
bridge.tres
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://ba7yoi5ia0isy"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cei1u6horkbiu" path="res://level/checkboard.png" id="1_miuk6"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color(0.396967, 0.760667, 0.973092, 1)
|
||||||
|
albedo_texture = ExtResource("1_miuk6")
|
||||||
|
uv1_triplanar = true
|
||||||
362
export_presets.cfg
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
[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="../../ShootahGame3D.x86_64"
|
||||||
|
patches=PackedStringArray()
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=true
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
|
[preset.0.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
binary_format/embed_pck=true
|
||||||
|
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="../../ShootahGame3D.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=true
|
||||||
|
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=true
|
||||||
|
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}'"
|
||||||
|
|
||||||
|
[preset.2]
|
||||||
|
|
||||||
|
name="macOS"
|
||||||
|
platform="macOS"
|
||||||
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="../../ShootahGame3D.zip"
|
||||||
|
patches=PackedStringArray()
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
|
[preset.2.options]
|
||||||
|
|
||||||
|
export/distribution_type=1
|
||||||
|
binary_format/architecture="universal"
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
application/icon=""
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/bundle_identifier="me.chtm.ShootahGame3D"
|
||||||
|
application/signature=""
|
||||||
|
application/app_category="Games"
|
||||||
|
application/short_version=""
|
||||||
|
application/version=""
|
||||||
|
application/copyright=""
|
||||||
|
application/copyright_localized={}
|
||||||
|
application/min_macos_version_x86_64="10.12"
|
||||||
|
application/min_macos_version_arm64="11.00"
|
||||||
|
application/export_angle=0
|
||||||
|
display/high_res=true
|
||||||
|
application/additional_plist_content=""
|
||||||
|
xcode/platform_build="14C18"
|
||||||
|
xcode/sdk_version="13.1"
|
||||||
|
xcode/sdk_build="22C55"
|
||||||
|
xcode/sdk_name="macosx13.1"
|
||||||
|
xcode/xcode_version="1420"
|
||||||
|
xcode/xcode_build="14C18"
|
||||||
|
codesign/codesign=1
|
||||||
|
codesign/installer_identity=""
|
||||||
|
codesign/apple_team_id=""
|
||||||
|
codesign/identity=""
|
||||||
|
codesign/entitlements/custom_file=""
|
||||||
|
codesign/entitlements/allow_jit_code_execution=false
|
||||||
|
codesign/entitlements/allow_unsigned_executable_memory=false
|
||||||
|
codesign/entitlements/allow_dyld_environment_variables=false
|
||||||
|
codesign/entitlements/disable_library_validation=false
|
||||||
|
codesign/entitlements/audio_input=false
|
||||||
|
codesign/entitlements/camera=false
|
||||||
|
codesign/entitlements/location=false
|
||||||
|
codesign/entitlements/address_book=false
|
||||||
|
codesign/entitlements/calendars=false
|
||||||
|
codesign/entitlements/photos_library=false
|
||||||
|
codesign/entitlements/apple_events=false
|
||||||
|
codesign/entitlements/debugging=false
|
||||||
|
codesign/entitlements/app_sandbox/enabled=true
|
||||||
|
codesign/entitlements/app_sandbox/network_server=false
|
||||||
|
codesign/entitlements/app_sandbox/network_client=false
|
||||||
|
codesign/entitlements/app_sandbox/device_usb=false
|
||||||
|
codesign/entitlements/app_sandbox/device_bluetooth=false
|
||||||
|
codesign/entitlements/app_sandbox/files_downloads=0
|
||||||
|
codesign/entitlements/app_sandbox/files_pictures=0
|
||||||
|
codesign/entitlements/app_sandbox/files_music=0
|
||||||
|
codesign/entitlements/app_sandbox/files_movies=0
|
||||||
|
codesign/entitlements/app_sandbox/files_user_selected=0
|
||||||
|
codesign/entitlements/app_sandbox/helper_executables=[]
|
||||||
|
codesign/entitlements/additional=""
|
||||||
|
codesign/custom_options=PackedStringArray()
|
||||||
|
notarization/notarization=0
|
||||||
|
privacy/microphone_usage_description=""
|
||||||
|
privacy/microphone_usage_description_localized={}
|
||||||
|
privacy/camera_usage_description=""
|
||||||
|
privacy/camera_usage_description_localized={}
|
||||||
|
privacy/location_usage_description=""
|
||||||
|
privacy/location_usage_description_localized={}
|
||||||
|
privacy/address_book_usage_description=""
|
||||||
|
privacy/address_book_usage_description_localized={}
|
||||||
|
privacy/calendar_usage_description=""
|
||||||
|
privacy/calendar_usage_description_localized={}
|
||||||
|
privacy/photos_library_usage_description=""
|
||||||
|
privacy/photos_library_usage_description_localized={}
|
||||||
|
privacy/desktop_folder_usage_description=""
|
||||||
|
privacy/desktop_folder_usage_description_localized={}
|
||||||
|
privacy/documents_folder_usage_description=""
|
||||||
|
privacy/documents_folder_usage_description_localized={}
|
||||||
|
privacy/downloads_folder_usage_description=""
|
||||||
|
privacy/downloads_folder_usage_description_localized={}
|
||||||
|
privacy/network_volumes_usage_description=""
|
||||||
|
privacy/network_volumes_usage_description_localized={}
|
||||||
|
privacy/removable_volumes_usage_description=""
|
||||||
|
privacy/removable_volumes_usage_description_localized={}
|
||||||
|
privacy/tracking_enabled=false
|
||||||
|
privacy/tracking_domains=PackedStringArray()
|
||||||
|
privacy/collected_data/name/collected=false
|
||||||
|
privacy/collected_data/name/linked_to_user=false
|
||||||
|
privacy/collected_data/name/used_for_tracking=false
|
||||||
|
privacy/collected_data/name/collection_purposes=0
|
||||||
|
privacy/collected_data/email_address/collected=false
|
||||||
|
privacy/collected_data/email_address/linked_to_user=false
|
||||||
|
privacy/collected_data/email_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/email_address/collection_purposes=0
|
||||||
|
privacy/collected_data/phone_number/collected=false
|
||||||
|
privacy/collected_data/phone_number/linked_to_user=false
|
||||||
|
privacy/collected_data/phone_number/used_for_tracking=false
|
||||||
|
privacy/collected_data/phone_number/collection_purposes=0
|
||||||
|
privacy/collected_data/physical_address/collected=false
|
||||||
|
privacy/collected_data/physical_address/linked_to_user=false
|
||||||
|
privacy/collected_data/physical_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/physical_address/collection_purposes=0
|
||||||
|
privacy/collected_data/other_contact_info/collected=false
|
||||||
|
privacy/collected_data/other_contact_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_contact_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_contact_info/collection_purposes=0
|
||||||
|
privacy/collected_data/health/collected=false
|
||||||
|
privacy/collected_data/health/linked_to_user=false
|
||||||
|
privacy/collected_data/health/used_for_tracking=false
|
||||||
|
privacy/collected_data/health/collection_purposes=0
|
||||||
|
privacy/collected_data/fitness/collected=false
|
||||||
|
privacy/collected_data/fitness/linked_to_user=false
|
||||||
|
privacy/collected_data/fitness/used_for_tracking=false
|
||||||
|
privacy/collected_data/fitness/collection_purposes=0
|
||||||
|
privacy/collected_data/payment_info/collected=false
|
||||||
|
privacy/collected_data/payment_info/linked_to_user=false
|
||||||
|
privacy/collected_data/payment_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/payment_info/collection_purposes=0
|
||||||
|
privacy/collected_data/credit_info/collected=false
|
||||||
|
privacy/collected_data/credit_info/linked_to_user=false
|
||||||
|
privacy/collected_data/credit_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/credit_info/collection_purposes=0
|
||||||
|
privacy/collected_data/other_financial_info/collected=false
|
||||||
|
privacy/collected_data/other_financial_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_financial_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_financial_info/collection_purposes=0
|
||||||
|
privacy/collected_data/precise_location/collected=false
|
||||||
|
privacy/collected_data/precise_location/linked_to_user=false
|
||||||
|
privacy/collected_data/precise_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/precise_location/collection_purposes=0
|
||||||
|
privacy/collected_data/coarse_location/collected=false
|
||||||
|
privacy/collected_data/coarse_location/linked_to_user=false
|
||||||
|
privacy/collected_data/coarse_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/coarse_location/collection_purposes=0
|
||||||
|
privacy/collected_data/sensitive_info/collected=false
|
||||||
|
privacy/collected_data/sensitive_info/linked_to_user=false
|
||||||
|
privacy/collected_data/sensitive_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/sensitive_info/collection_purposes=0
|
||||||
|
privacy/collected_data/contacts/collected=false
|
||||||
|
privacy/collected_data/contacts/linked_to_user=false
|
||||||
|
privacy/collected_data/contacts/used_for_tracking=false
|
||||||
|
privacy/collected_data/contacts/collection_purposes=0
|
||||||
|
privacy/collected_data/emails_or_text_messages/collected=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/linked_to_user=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/collection_purposes=0
|
||||||
|
privacy/collected_data/photos_or_videos/collected=false
|
||||||
|
privacy/collected_data/photos_or_videos/linked_to_user=false
|
||||||
|
privacy/collected_data/photos_or_videos/used_for_tracking=false
|
||||||
|
privacy/collected_data/photos_or_videos/collection_purposes=0
|
||||||
|
privacy/collected_data/audio_data/collected=false
|
||||||
|
privacy/collected_data/audio_data/linked_to_user=false
|
||||||
|
privacy/collected_data/audio_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/audio_data/collection_purposes=0
|
||||||
|
privacy/collected_data/gameplay_content/collected=false
|
||||||
|
privacy/collected_data/gameplay_content/linked_to_user=false
|
||||||
|
privacy/collected_data/gameplay_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/gameplay_content/collection_purposes=0
|
||||||
|
privacy/collected_data/customer_support/collected=false
|
||||||
|
privacy/collected_data/customer_support/linked_to_user=false
|
||||||
|
privacy/collected_data/customer_support/used_for_tracking=false
|
||||||
|
privacy/collected_data/customer_support/collection_purposes=0
|
||||||
|
privacy/collected_data/other_user_content/collected=false
|
||||||
|
privacy/collected_data/other_user_content/linked_to_user=false
|
||||||
|
privacy/collected_data/other_user_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_user_content/collection_purposes=0
|
||||||
|
privacy/collected_data/browsing_history/collected=false
|
||||||
|
privacy/collected_data/browsing_history/linked_to_user=false
|
||||||
|
privacy/collected_data/browsing_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/browsing_history/collection_purposes=0
|
||||||
|
privacy/collected_data/search_hhistory/collected=false
|
||||||
|
privacy/collected_data/search_hhistory/linked_to_user=false
|
||||||
|
privacy/collected_data/search_hhistory/used_for_tracking=false
|
||||||
|
privacy/collected_data/search_hhistory/collection_purposes=0
|
||||||
|
privacy/collected_data/user_id/collected=false
|
||||||
|
privacy/collected_data/user_id/linked_to_user=false
|
||||||
|
privacy/collected_data/user_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/user_id/collection_purposes=0
|
||||||
|
privacy/collected_data/device_id/collected=false
|
||||||
|
privacy/collected_data/device_id/linked_to_user=false
|
||||||
|
privacy/collected_data/device_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/device_id/collection_purposes=0
|
||||||
|
privacy/collected_data/purchase_history/collected=false
|
||||||
|
privacy/collected_data/purchase_history/linked_to_user=false
|
||||||
|
privacy/collected_data/purchase_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/purchase_history/collection_purposes=0
|
||||||
|
privacy/collected_data/product_interaction/collected=false
|
||||||
|
privacy/collected_data/product_interaction/linked_to_user=false
|
||||||
|
privacy/collected_data/product_interaction/used_for_tracking=false
|
||||||
|
privacy/collected_data/product_interaction/collection_purposes=0
|
||||||
|
privacy/collected_data/advertising_data/collected=false
|
||||||
|
privacy/collected_data/advertising_data/linked_to_user=false
|
||||||
|
privacy/collected_data/advertising_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/advertising_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_usage_data/collected=false
|
||||||
|
privacy/collected_data/other_usage_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_usage_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_usage_data/collection_purposes=0
|
||||||
|
privacy/collected_data/crash_data/collected=false
|
||||||
|
privacy/collected_data/crash_data/linked_to_user=false
|
||||||
|
privacy/collected_data/crash_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/crash_data/collection_purposes=0
|
||||||
|
privacy/collected_data/performance_data/collected=false
|
||||||
|
privacy/collected_data/performance_data/linked_to_user=false
|
||||||
|
privacy/collected_data/performance_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/performance_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_diagnostic_data/collected=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/collection_purposes=0
|
||||||
|
privacy/collected_data/environment_scanning/collected=false
|
||||||
|
privacy/collected_data/environment_scanning/linked_to_user=false
|
||||||
|
privacy/collected_data/environment_scanning/used_for_tracking=false
|
||||||
|
privacy/collected_data/environment_scanning/collection_purposes=0
|
||||||
|
privacy/collected_data/hands/collected=false
|
||||||
|
privacy/collected_data/hands/linked_to_user=false
|
||||||
|
privacy/collected_data/hands/used_for_tracking=false
|
||||||
|
privacy/collected_data/hands/collection_purposes=0
|
||||||
|
privacy/collected_data/head/collected=false
|
||||||
|
privacy/collected_data/head/linked_to_user=false
|
||||||
|
privacy/collected_data/head/used_for_tracking=false
|
||||||
|
privacy/collected_data/head/collection_purposes=0
|
||||||
|
privacy/collected_data/other_data_types/collected=false
|
||||||
|
privacy/collected_data/other_data_types/linked_to_user=false
|
||||||
|
privacy/collected_data/other_data_types/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_data_types/collection_purposes=0
|
||||||
|
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
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
8
floor.tres
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c15gyykabf16x"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cei1u6horkbiu" path="res://level/checkboard.png" id="1_tikia"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color(0.888626, 0.624795, 0.760052, 1)
|
||||||
|
albedo_texture = ExtResource("1_tikia")
|
||||||
|
uv1_triplanar = true
|
||||||
20
game.gd
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@onready var score_label: Label = %ScoreLabel
|
||||||
|
|
||||||
|
var score = 0
|
||||||
|
|
||||||
|
func increase_score():
|
||||||
|
score += 1
|
||||||
|
score_label.text = "Score: " + str(score)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mob_spawner_3d_mob_spawned(mob: Node) -> void:
|
||||||
|
if mob.has_signal("died"):
|
||||||
|
mob.died.connect(increase_score)
|
||||||
|
else:
|
||||||
|
print("this mob cannot die! (probably a bug)")
|
||||||
|
|
||||||
|
func _on_kill_plane_body_entered(body: Node3D) -> void:
|
||||||
|
print("kill plane triggered")
|
||||||
|
get_tree().reload_current_scene.call_deferred()
|
||||||
1
game.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://pnp0k1jmvccp
|
||||||
205
game.tscn
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
[gd_scene load_steps=12 format=3 uid="uid://bc23rfm57cbjk"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://h8tyroiwkr42" path="res://mob/player.tscn" id="1_80nbo"]
|
||||||
|
[ext_resource type="Script" uid="uid://pnp0k1jmvccp" path="res://game.gd" id="1_eow3j"]
|
||||||
|
[ext_resource type="Material" uid="uid://c23xehahalr4v" path="res://start_location.tres" id="1_fc0e3"]
|
||||||
|
[ext_resource type="Material" uid="uid://c15gyykabf16x" path="res://floor.tres" id="2_7jktm"]
|
||||||
|
[ext_resource type="Material" uid="uid://ba7yoi5ia0isy" path="res://bridge.tres" id="3_ryrav"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://3t7u0llrbbi" path="res://mob/bat_mob.tscn" id="5_7jktm"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c0ky5ie5cfgh2" path="res://mob/spawner/mob_spawner_3d.tscn" id="6_ryrav"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ht0ktfrqr1ef" path="res://player/cookie_3d.tscn" id="8_j5wjh"]
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="Environment_80nbo"]
|
||||||
|
background_mode = 1
|
||||||
|
background_color = Color(0.15376, 0.719055, 0.829417, 1)
|
||||||
|
ambient_light_source = 2
|
||||||
|
ambient_light_color = Color(0.852816, 0.773674, 0.634462, 1)
|
||||||
|
tonemap_mode = 2
|
||||||
|
fog_enabled = true
|
||||||
|
fog_light_color = Color(0.0437325, 0.398574, 0.495351, 1)
|
||||||
|
fog_density = 0.0013
|
||||||
|
fog_height = -5.0
|
||||||
|
fog_height_density = 0.625
|
||||||
|
volumetric_fog_density = 0.0125
|
||||||
|
|
||||||
|
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_eow3j"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_ryrav"]
|
||||||
|
font_size = 56
|
||||||
|
shadow_size = 4
|
||||||
|
shadow_color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="Game" type="Node3D"]
|
||||||
|
script = ExtResource("1_eow3j")
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
|
environment = SubResource("Environment_80nbo")
|
||||||
|
|
||||||
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
|
transform = Transform3D(0.816218, 0.385055, 0.430721, -0.572746, 0.441435, 0.690722, 0.0758305, -0.810474, 0.580846, 0, 11.331, 0)
|
||||||
|
shadow_enabled = true
|
||||||
|
|
||||||
|
[node name="BatMob" parent="." instance=ExtResource("5_7jktm")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23, 2, -31)
|
||||||
|
|
||||||
|
[node name="MobSpawner3D" parent="." instance=ExtResource("6_ryrav")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23, 0, -47)
|
||||||
|
mob_to_spawn = ExtResource("5_7jktm")
|
||||||
|
|
||||||
|
[node name="MobSpawner3D2" parent="." instance=ExtResource("6_ryrav")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40, 0, -52)
|
||||||
|
mob_to_spawn = ExtResource("5_7jktm")
|
||||||
|
|
||||||
|
[node name="MobSpawner3D3" parent="." instance=ExtResource("6_ryrav")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48, 0, -27)
|
||||||
|
mob_to_spawn = ExtResource("5_7jktm")
|
||||||
|
|
||||||
|
[node name="KillPlane" type="Area3D" parent="."]
|
||||||
|
collision_layer = 0
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="KillPlane"]
|
||||||
|
transform = Transform3D(6.4, 0, 0, 0, 6.4, 0, 0, 0, 6.4, -28, -7, -22)
|
||||||
|
shape = SubResource("WorldBoundaryShape3D_eow3j")
|
||||||
|
debug_color = Color(0.635294, 0.34902, 0.988235, 0.792157)
|
||||||
|
|
||||||
|
[node name="Player" parent="." instance=ExtResource("1_80nbo")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24, 2, -19)
|
||||||
|
|
||||||
|
[node name="ScoreLabel" type="Label" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -106.0
|
||||||
|
offset_top = 24.0
|
||||||
|
offset_right = 106.0
|
||||||
|
offset_bottom = 101.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "Score: 0"
|
||||||
|
label_settings = SubResource("LabelSettings_ryrav")
|
||||||
|
|
||||||
|
[node name="cookie_3d" parent="." instance=ExtResource("8_j5wjh")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -4)
|
||||||
|
|
||||||
|
[node name="cookie_3d_2" parent="." instance=ExtResource("8_j5wjh")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51, 0, -53)
|
||||||
|
|
||||||
|
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, -7.5, -5)
|
||||||
|
material_override = ExtResource("1_fc0e3")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(10, 15, 10)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D6" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51, -7.5, -53)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(10, 15, 10)
|
||||||
|
material = ExtResource("1_fc0e3")
|
||||||
|
|
||||||
|
[node name="CSGBox3D3" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, -7, -22)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 14, 20)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D8" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.5, -7.5, -38)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 15, 12)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D15" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -33.5, -7.5, -54)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 15, 7)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D10" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.5, -1, -35.35)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 2, 4.1)
|
||||||
|
material = ExtResource("3_ryrav")
|
||||||
|
|
||||||
|
[node name="CSGBox3D12" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51.5, -7.5, -35)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(1, 15, 4)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D13" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.5, -7.5, -40)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(1, 15, 4)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D14" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51.5, -7.5, -44)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(1, 15, 4)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D11" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.5, -1, -42.15)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 2, 4.3)
|
||||||
|
material = ExtResource("3_ryrav")
|
||||||
|
|
||||||
|
[node name="CSGBox3D9" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -11.5, -7.5, -24)
|
||||||
|
material_override = ExtResource("3_ryrav")
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(5, 15, 9)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D5" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.5, -7.5, -53.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(7, 15, 15)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.5, -7.5, -26.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(15, 15, 11)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D16" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.5, -6.5, -15.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(15, 17, 11)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D7" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43, -7.5, -26.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(24, 15, 11)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23, -7.5, -53)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(14, 15, 18)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D17" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -36.5, 7.5, -26.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(3, 15, 3)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[node name="CSGBox3D18" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.5, 7.5, -51.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(3, 15, 3)
|
||||||
|
material = ExtResource("2_7jktm")
|
||||||
|
|
||||||
|
[connection signal="mob_spawned" from="MobSpawner3D" to="." method="_on_mob_spawner_3d_mob_spawned"]
|
||||||
|
[connection signal="mob_spawned" from="MobSpawner3D2" to="." method="_on_mob_spawner_3d_mob_spawned"]
|
||||||
|
[connection signal="mob_spawned" from="MobSpawner3D3" to="." method="_on_mob_spawner_3d_mob_spawned"]
|
||||||
|
[connection signal="body_entered" from="KillPlane" to="." method="_on_kill_plane_body_entered"]
|
||||||
1
icon.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 994 B |
37
icon.svg.import
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bobgb52o2hrj6"
|
||||||
|
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://icon.svg"
|
||||||
|
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
BIN
level/checkboard.png
Normal file
|
After Width: | Height: | Size: 449 B |
36
level/checkboard.png.import
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cei1u6horkbiu"
|
||||||
|
path.s3tc="res://.godot/imported/checkboard.png-130d133a6029e1ca9a92686e2c703873.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/checkboard.png-130d133a6029e1ca9a92686e2c703873.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://level/checkboard.png"
|
||||||
|
dest_files=["res://.godot/imported/checkboard.png-130d133a6029e1ca9a92686e2c703873.s3tc.ctex", "res://.godot/imported/checkboard.png-130d133a6029e1ca9a92686e2c703873.etc2.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
|
||||||
10
level/sky.gdshader
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
shader_type sky;
|
||||||
|
|
||||||
|
uniform vec3 top_color : source_color = vec3(1.0);
|
||||||
|
uniform vec3 bottom_color : source_color = vec3(1.0);
|
||||||
|
uniform sampler2D gradient_curve;
|
||||||
|
|
||||||
|
void sky() {
|
||||||
|
// gradient
|
||||||
|
COLOR = mix(top_color.rgb, bottom_color.rgb, texture(gradient_curve, vec2(SKY_COORDS.y, 0.0)).x);
|
||||||
|
}
|
||||||
1
level/sky.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://b482oxemnbw1s
|
||||||
86
level/temporary_level.tscn
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
[gd_scene load_steps=7 format=3 uid="uid://dp7sxe5xl5shk"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cei1u6horkbiu" path="res://level/checkboard.png" id="1_cig4d"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://h8tyroiwkr42" path="res://mob/player.tscn" id="2_bc4qa"]
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="Environment_pev5d"]
|
||||||
|
background_mode = 1
|
||||||
|
background_color = Color(0, 0.807843, 1, 1)
|
||||||
|
ambient_light_source = 2
|
||||||
|
ambient_light_color = Color(0.815625, 0.702063, 0.54125, 1)
|
||||||
|
ambient_light_sky_contribution = 0.31
|
||||||
|
tonemap_mode = 2
|
||||||
|
tonemap_exposure = 1.05
|
||||||
|
tonemap_white = 0.95
|
||||||
|
ssao_intensity = 1.0
|
||||||
|
glow_normalized = true
|
||||||
|
glow_intensity = 0.2
|
||||||
|
fog_enabled = true
|
||||||
|
fog_light_color = Color(0, 0.478431, 0.764706, 1)
|
||||||
|
fog_density = 0.002
|
||||||
|
fog_height = 0.52
|
||||||
|
fog_height_density = 0.1319
|
||||||
|
volumetric_fog_density = 0.1525
|
||||||
|
volumetric_fog_albedo = Color(0.203922, 0.203922, 1, 1)
|
||||||
|
volumetric_fog_emission = Color(0.0431373, 0.0431373, 0.0431373, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ooyhk"]
|
||||||
|
albedo_color = Color(1, 0.717647, 0.188235, 1)
|
||||||
|
albedo_texture = ExtResource("1_cig4d")
|
||||||
|
uv1_triplanar = true
|
||||||
|
uv1_triplanar_sharpness = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pixig"]
|
||||||
|
albedo_color = Color(0.286275, 0.682353, 0.427451, 1)
|
||||||
|
albedo_texture = ExtResource("1_cig4d")
|
||||||
|
uv1_triplanar = true
|
||||||
|
uv1_triplanar_sharpness = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7l0sc"]
|
||||||
|
albedo_color = Color(0.286275, 0.682353, 0.427451, 1)
|
||||||
|
albedo_texture = ExtResource("1_cig4d")
|
||||||
|
uv1_triplanar = true
|
||||||
|
uv1_triplanar_sharpness = 4.0
|
||||||
|
|
||||||
|
[node name="TemporaryLevel" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
|
environment = SubResource("Environment_pev5d")
|
||||||
|
|
||||||
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
|
transform = Transform3D(0.707107, -0.612373, 0.353553, 0, 0.5, 0.866026, -0.707107, -0.612373, 0.353553, 0, 10, 0)
|
||||||
|
shadow_enabled = true
|
||||||
|
directional_shadow_max_distance = 40.0
|
||||||
|
|
||||||
|
[node name="Bridge2" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(4, 1, 3)
|
||||||
|
material = SubResource("StandardMaterial3D_ooyhk")
|
||||||
|
|
||||||
|
[node name="Bridge5" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 14.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(4, 1, 3)
|
||||||
|
material = SubResource("StandardMaterial3D_ooyhk")
|
||||||
|
|
||||||
|
[node name="Bridge6" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 18.5)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(4, 1, 3)
|
||||||
|
material = SubResource("StandardMaterial3D_ooyhk")
|
||||||
|
|
||||||
|
[node name="Platform6" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5, 0)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(17, 11, 15)
|
||||||
|
material = SubResource("StandardMaterial3D_pixig")
|
||||||
|
|
||||||
|
[node name="Platform7" type="CSGBox3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5, 26)
|
||||||
|
use_collision = true
|
||||||
|
size = Vector3(9, 11, 9)
|
||||||
|
material = SubResource("StandardMaterial3D_7l0sc")
|
||||||
|
|
||||||
|
[node name="CharacterBody3D" parent="." instance=ExtResource("2_bc4qa")]
|
||||||
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.292204, 1.5, 0.259768)
|
||||||
10
mob/bat/bat_mob_mat.tres
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://vxjmb87ocrs3"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://2qvp3lxbf3ae" path="res://mob/bat/bat_model_bat_palette.png" id="1_sri6l"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
resource_name = "bat_mat"
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("1_sri6l")
|
||||||
|
roughness = 0.427273
|
||||||
BIN
mob/bat/bat_model.glb
Normal file
1839
mob/bat/bat_model.glb.import
Normal file
BIN
mob/bat/bat_model_bat_palette.png
Normal file
|
After Width: | Height: | Size: 170 B |
36
mob/bat/bat_model_bat_palette.png.import
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://2qvp3lxbf3ae"
|
||||||
|
path.s3tc="res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/bat/bat_model_bat_palette.png"
|
||||||
|
dest_files=["res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.s3tc.ctex", "res://.godot/imported/bat_model_bat_palette.png-7ad9c3c193e1d543015fac56e3d622e5.etc2.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
|
||||||
47
mob/bat_mob.gd
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
extends RigidBody3D
|
||||||
|
|
||||||
|
signal died
|
||||||
|
|
||||||
|
@onready var bat_model: Node3D = %bat_model
|
||||||
|
@onready var player: CharacterBody3D = get_node("/root/Game/Player")
|
||||||
|
@onready var corpse_timer: Timer = $CorpseTimer
|
||||||
|
@onready var hurt_box: Area3D = %HurtBox
|
||||||
|
|
||||||
|
var speed = randf_range(2.0, 4.0)
|
||||||
|
var health = 100.0
|
||||||
|
|
||||||
|
func take_damage(damage: float = 25.0) -> void:
|
||||||
|
if is_zero_approx(health):
|
||||||
|
return # catch shooting mob on ground and stopping it from despawning
|
||||||
|
else:
|
||||||
|
%HurtSound.play()
|
||||||
|
bat_model.hurt()
|
||||||
|
health = clampf((health - damage), 0.0, health)
|
||||||
|
|
||||||
|
if is_zero_approx(health):
|
||||||
|
# TODO: do more with this
|
||||||
|
set_physics_process(false)
|
||||||
|
gravity_scale = 1.0
|
||||||
|
%DieSound.play()
|
||||||
|
|
||||||
|
var die_direction = global_position.direction_to(player.global_position) * -1.0
|
||||||
|
var blerg_force = Vector3.UP * randf_range(2.0, 5.0)
|
||||||
|
apply_central_impulse(die_direction * 8.0 + blerg_force)
|
||||||
|
|
||||||
|
died.emit()
|
||||||
|
corpse_timer.start()
|
||||||
|
|
||||||
|
func _on_corpse_timer_timeout() -> void:
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
var direction: Vector3 = global_position.direction_to(player.global_position)
|
||||||
|
direction.y = 0.0
|
||||||
|
linear_velocity = direction * speed
|
||||||
|
bat_model.rotation.y = Vector3.MODEL_FRONT.signed_angle_to(direction, Vector3.UP)
|
||||||
|
|
||||||
|
var targets = hurt_box.get_overlapping_bodies()
|
||||||
|
if not targets.is_empty():
|
||||||
|
for t in targets:
|
||||||
|
if t.has_method("hurt"):
|
||||||
|
t.hurt(5*delta)
|
||||||
1
mob/bat_mob.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://c0nx5q5ppfatt
|
||||||
81
mob/bat_mob.tscn
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
[gd_scene load_steps=9 format=3 uid="uid://3t7u0llrbbi"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://c0nx5q5ppfatt" path="res://mob/bat_mob.gd" id="1_0ebaf"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://gvin6dmn1uk8" path="res://mob/bat_model.tscn" id="1_1xugm"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://2qvp3lxbf3ae" path="res://mob/bat/bat_model_bat_palette.png" id="3_yuo4x"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cvge1n06euj5o" path="res://mob/mob_take_damage.wav" id="4_mjy8e"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://hghb3bqm52oh" path="res://mob/mob_ko.wav" id="5_5et38"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_0ebaf"]
|
||||||
|
height = 1.4
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iwjed"]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
resource_name = "bat_mat"
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("3_yuo4x")
|
||||||
|
roughness = 0.427273
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yuo4x"]
|
||||||
|
height = 1.6
|
||||||
|
|
||||||
|
[node name="BatMob" type="RigidBody3D"]
|
||||||
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||||
|
collision_layer = 2
|
||||||
|
gravity_scale = 0.0
|
||||||
|
script = ExtResource("1_0ebaf")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(-2.62268e-08, 0.6, 0, -0.6, -2.62268e-08, 0, 0, 0, 0.6, 0, 0, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_0ebaf")
|
||||||
|
|
||||||
|
[node name="bat_model" parent="." instance=ExtResource("1_1xugm")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Skeleton3D" parent="bat_model/Armature" index="0"]
|
||||||
|
bones/0/position = Vector3(0, -0.0173995, 0)
|
||||||
|
bones/1/rotation = Quaternion(0.0455521, 0.109607, -0.618641, 0.776656)
|
||||||
|
bones/2/rotation = Quaternion(-0.129224, -0.0444413, 0.324096, 0.936102)
|
||||||
|
bones/3/rotation = Quaternion(-0.201664, -0.00156411, 0.238139, 0.950063)
|
||||||
|
bones/4/rotation = Quaternion(0.0455521, -0.109607, 0.618641, 0.776656)
|
||||||
|
bones/5/rotation = Quaternion(-0.129224, 0.0444413, -0.324096, 0.936102)
|
||||||
|
bones/6/rotation = Quaternion(-0.201664, 0.00156411, -0.238139, 0.950063)
|
||||||
|
bones/7/position = Vector3(0.130992, -0.227392, -0.0878515)
|
||||||
|
bones/7/rotation = Quaternion(0.261968, 0.0834552, 0.265751, 0.924005)
|
||||||
|
bones/8/rotation = Quaternion(3.46134e-08, 0.550375, 0.834917, 2.3571e-08)
|
||||||
|
bones/10/position = Vector3(-0.130992, -0.227392, -0.0878515)
|
||||||
|
bones/10/rotation = Quaternion(0.261968, -0.0834552, -0.265751, 0.924005)
|
||||||
|
bones/11/rotation = Quaternion(2.41321e-08, 0.550375, 0.834917, 3.92162e-08)
|
||||||
|
|
||||||
|
[node name="bat" parent="bat_model/Armature/Skeleton3D" index="0"]
|
||||||
|
surface_material_override/0 = SubResource("StandardMaterial3D_iwjed")
|
||||||
|
|
||||||
|
[node name="CorpseTimer" type="Timer" parent="."]
|
||||||
|
wait_time = 5.0
|
||||||
|
one_shot = true
|
||||||
|
|
||||||
|
[node name="HurtSound" type="AudioStreamPlayer3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("4_mjy8e")
|
||||||
|
volume_db = -20.0
|
||||||
|
max_db = 1.0
|
||||||
|
|
||||||
|
[node name="DieSound" type="AudioStreamPlayer3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("5_5et38")
|
||||||
|
volume_db = -20.0
|
||||||
|
max_db = 1.0
|
||||||
|
|
||||||
|
[node name="HurtBox" type="Area3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
collision_layer = 0
|
||||||
|
collision_mask = 4
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="HurtBox"]
|
||||||
|
transform = Transform3D(0.45, -3.93403e-08, 3.93403e-08, 3.93403e-08, -1.96701e-08, -0.45, 3.93403e-08, 0.45, -1.96701e-08, -1.74846e-08, 0, 0.2)
|
||||||
|
shape = SubResource("CapsuleShape3D_yuo4x")
|
||||||
|
debug_color = Color(0.894118, 0.254902, 0.482353, 0.607843)
|
||||||
|
|
||||||
|
[connection signal="timeout" from="CorpseTimer" to="." method="_on_corpse_timer_timeout"]
|
||||||
|
|
||||||
|
[editable path="bat_model"]
|
||||||
10
mob/bat_model.gd
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@onready var animation_tree: AnimationTree = %AnimationTree
|
||||||
|
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||||
|
|
||||||
|
func hurt() -> void:
|
||||||
|
animation_tree.set("parameters/OneShot/request", true)
|
||||||
|
|
||||||
|
func die() -> void:
|
||||||
|
animation_player.pause()
|
||||||
1
mob/bat_model.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cgv01dthn7641
|
||||||
223
mob/bat_model.tscn
Normal file
@@ -0,0 +1,223 @@
|
|||||||
|
[gd_scene load_steps=13 format=3 uid="uid://gvin6dmn1uk8"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://hglc5k68m7d1" path="res://mob/bat/bat_model.glb" id="1_12yrx"]
|
||||||
|
[ext_resource type="Script" uid="uid://cgv01dthn7641" path="res://mob/bat_model.gd" id="2_dmdl0"]
|
||||||
|
[ext_resource type="Material" uid="uid://vxjmb87ocrs3" path="res://mob/bat/bat_mob_mat.tres" id="2_vofu1"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_0gbdx"]
|
||||||
|
resource_name = "Idle"
|
||||||
|
length = 1.33333
|
||||||
|
loop_mode = 1
|
||||||
|
tracks/0/type = "position_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Armature/Skeleton3D:body")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, 0, -0.0074, 0, 0.0333333, 1, 0, -0.0142, 0, 0.0666667, 1, 0, -0.0198, 0, 0.1, 1, 0, -0.0236, 0, 0.166667, 1, 0, -0.0236, 0, 0.2, 1, 0, -0.0198, 0, 0.233333, 1, 0, -0.0142, 0, 0.266667, 1, 0, -0.0074, 0, 0.333333, 1, 0, 0.00739999, 0, 0.366667, 1, 0, 0.0142, 0, 0.4, 1, 0, 0.0198, 0, 0.433333, 1, 0, 0.0236, 0, 0.5, 1, 0, 0.0236, 0, 0.533333, 1, 0, 0.0198, 0, 0.566667, 1, 0, 0.0142, 0, 0.6, 1, 0, 0.00739999, 0, 0.666667, 1, 0, -0.0074, 0, 0.7, 1, 0, -0.0142, 0, 0.733333, 1, 0, -0.0198, 0, 0.766667, 1, 0, -0.0236, 0, 0.833333, 1, 0, -0.0236, 0, 0.866667, 1, 0, -0.0198, 0, 0.9, 1, 0, -0.0142, 0, 0.933333, 1, 0, -0.0074, 0, 1, 1, 0, 0.00739999, 0, 1.03333, 1, 0, 0.0142, 0, 1.06667, 1, 0, 0.0198, 0, 1.1, 1, 0, 0.0236, 0, 1.16667, 1, 0, 0.0236, 0, 1.2, 1, 0, 0.0198, 0, 1.23333, 1, 0, 0.0142, 0, 1.26667, 1, 0, 0.00739999, 0, 1.33333, 1, 0, -0.0074, 0)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Armature/Skeleton3D:wing_1.L")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.0286549, 0.188485, -0.686718, 0.701478, 0.0333333, 1, -0.0506094, 0.208724, -0.677509, 0.703459, 0.0666667, 1, -0.0610847, 0.215431, -0.666256, 0.71131, 0.1, 1, -0.05709, 0.207045, -0.655256, 0.724233, 0.133333, 1, -0.0396006, 0.186493, -0.644631, 0.74034, 0.166667, 1, -0.0107812, 0.157663, -0.633842, 0.757147, 0.2, 1, 0.0267386, 0.12419, -0.622616, 0.772147, 0.266667, 1, 0.114195, 0.0556545, -0.600903, 0.789163, 0.3, 1, 0.155982, 0.0253652, -0.59312, 0.789452, 0.333333, 1, 0.190651, 6.60251e-05, -0.590026, 0.784552, 0.366667, 1, 0.213966, -0.0185891, -0.593371, 0.775747, 0.4, 1, 0.222174, -0.0279345, -0.602828, 0.765805, 0.433333, 1, 0.213282, -0.0252487, -0.61726, 0.756877, 0.466667, 1, 0.19033, -0.0110549, -0.634785, 0.7488, 0.5, 1, 0.157487, 0.0130927, -0.653025, 0.740665, 0.533333, 1, 0.118744, 0.045142, -0.669545, 0.731827, 0.6, 1, 0.0378164, 0.121276, -0.689637, 0.712925, 0.633333, 1, 0.001578, 0.158023, -0.691096, 0.705275, 0.666667, 1, -0.0286549, 0.188485, -0.686718, 0.701478, 0.7, 1, -0.0506094, 0.208724, -0.677509, 0.703459, 0.733333, 1, -0.0610847, 0.215431, -0.666256, 0.71131, 0.766667, 1, -0.05709, 0.207045, -0.655256, 0.724233, 0.8, 1, -0.0396006, 0.186493, -0.644631, 0.74034, 0.833333, 1, -0.0107812, 0.157663, -0.633842, 0.757147, 0.866667, 1, 0.0267386, 0.12419, -0.622616, 0.772147, 0.933333, 1, 0.114195, 0.0556545, -0.600903, 0.789163, 0.966667, 1, 0.155982, 0.0253652, -0.59312, 0.789452, 1, 1, 0.190651, 6.60251e-05, -0.590026, 0.784552, 1.03333, 1, 0.213966, -0.0185891, -0.593371, 0.775747, 1.06667, 1, 0.222174, -0.0279345, -0.602828, 0.765805, 1.1, 1, 0.213282, -0.0252487, -0.61726, 0.756877, 1.13333, 1, 0.19033, -0.0110549, -0.634785, 0.7488, 1.16667, 1, 0.157487, 0.0130927, -0.653025, 0.740665, 1.2, 1, 0.118744, 0.045142, -0.669545, 0.731827, 1.26667, 1, 0.0378164, 0.121276, -0.689637, 0.712925, 1.3, 1, 0.001578, 0.158023, -0.691096, 0.705275, 1.33333, 1, -0.0286549, 0.188485, -0.686718, 0.701478)
|
||||||
|
tracks/2/type = "rotation_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Armature/Skeleton3D:wing_2.L")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -0.0560155, -0.016041, 0.274838, 0.959724, 0.0333333, 1, -0.107724, -0.0293087, 0.260889, 0.958892, 0.0666667, 1, -0.150109, -0.0400536, 0.254681, 0.954464, 0.1, 1, -0.178377, -0.0485314, 0.258005, 0.948293, 0.133333, 1, -0.188128, -0.0538743, 0.269983, 0.94277, 0.166667, 1, -0.176689, -0.0543572, 0.288976, 0.939318, 0.2, 1, -0.147367, -0.0491943, 0.312801, 0.937026, 0.233333, 1, -0.104947, -0.0380736, 0.338908, 0.934172, 0.266667, 1, -0.0542423, -0.0212793, 0.364585, 0.929345, 0.3, 1, 4.35922e-07, 2.55374e-07, 0.387197, 0.921997, 0.333333, 1, 0.0532716, 0.023607, 0.404457, 0.912699, 0.366667, 1, 0.101459, 0.0465808, 0.414628, 0.903117, 0.4, 1, 0.140874, 0.0655118, 0.416552, 0.895738, 0.433333, 1, 0.168002, 0.0771313, 0.410045, 0.893134, 0.466667, 1, 0.178911, 0.0792831, 0.397312, 0.896576, 0.5, 1, 0.170442, 0.0715782, 0.380524, 0.906106, 0.533333, 1, 0.14463, 0.056739, 0.360771, 0.919623, 0.566667, 1, 0.104948, 0.0380741, 0.338908, 0.934172, 0.6, 1, 0.0552696, 0.0184505, 0.316108, 0.946932, 0.633333, 1, 3.97739e-07, 2.93199e-07, 0.294044, 0.955792, 0.666667, 1, -0.0560155, -0.016041, 0.274838, 0.959724, 0.7, 1, -0.107724, -0.0293087, 0.260889, 0.958892, 0.733333, 1, -0.150109, -0.0400536, 0.254681, 0.954464, 0.766667, 1, -0.178377, -0.0485314, 0.258005, 0.948293, 0.8, 1, -0.188128, -0.0538743, 0.269983, 0.94277, 0.833333, 1, -0.176689, -0.0543572, 0.288976, 0.939318, 0.866667, 1, -0.147367, -0.0491943, 0.312801, 0.937026, 0.9, 1, -0.104947, -0.0380736, 0.338908, 0.934172, 0.933333, 1, -0.0542423, -0.0212793, 0.364585, 0.929345, 0.966667, 1, 4.35922e-07, 2.55374e-07, 0.387197, 0.921997, 1, 1, 0.0532716, 0.023607, 0.404457, 0.912699, 1.03333, 1, 0.101459, 0.0465808, 0.414628, 0.903117, 1.06667, 1, 0.140874, 0.0655118, 0.416552, 0.895738, 1.1, 1, 0.168002, 0.0771313, 0.410045, 0.893134, 1.13333, 1, 0.178911, 0.0792831, 0.397312, 0.896576, 1.16667, 1, 0.170442, 0.0715782, 0.380524, 0.906106, 1.2, 1, 0.14463, 0.056739, 0.360771, 0.919623, 1.23333, 1, 0.104948, 0.0380741, 0.338908, 0.934172, 1.26667, 1, 0.0552696, 0.0184505, 0.316108, 0.946932, 1.3, 1, 3.97739e-07, 2.93199e-07, 0.294044, 0.955792, 1.33333, 1, -0.0560155, -0.016041, 0.274838, 0.959723)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Armature/Skeleton3D:wing_3.L")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, 0.0412136, 0.059985, 0.264753, 0.961566, 0.0333333, 1, -0.0159354, 0.0440908, 0.244883, 0.968419, 0.0666667, 1, -0.073461, 0.0305335, 0.228073, 0.970389, 0.1, 1, -0.126218, 0.0194948, 0.21651, 0.967891, 0.133333, 1, -0.169154, 0.0105836, 0.212432, 0.962366, 0.166667, 1, -0.197486, 0.00342183, 0.217359, 0.955899, 0.2, 1, -0.20688, -0.00128304, 0.230104, 0.950921, 0.233333, 1, -0.194684, -0.00193852, 0.248813, 0.948782, 0.266667, 1, -0.164213, 0.00231133, 0.271453, 0.948336, 0.3, 1, -0.120273, 0.011884, 0.29574, 0.947592, 0.333333, 1, -0.0677396, 0.0266105, 0.319228, 0.944879, 0.366667, 1, -0.0114933, 0.0454515, 0.339527, 0.939427, 0.4, 1, 0.0437561, 0.0664394, 0.354556, 0.931645, 0.433333, 1, 0.0936447, 0.086843, 0.362736, 0.923099, 0.466667, 1, 0.134205, 0.103508, 0.36302, 0.916238, 0.5, 1, 0.161688, 0.113444, 0.355316, 0.91364, 0.533333, 1, 0.172105, 0.114807, 0.34197, 0.916655, 0.566667, 1, 0.162369, 0.107434, 0.325273, 0.925361, 0.6, 1, 0.134745, 0.0938879, 0.306267, 0.937672, 0.633333, 1, 0.0929822, 0.077208, 0.285731, 0.950658, 0.666667, 1, 0.0412136, 0.059985, 0.264753, 0.961566, 0.7, 1, -0.0159354, 0.0440908, 0.244883, 0.968419, 0.733333, 1, -0.073461, 0.0305335, 0.228073, 0.970389, 0.766667, 1, -0.126218, 0.0194948, 0.21651, 0.967891, 0.8, 1, -0.169154, 0.0105836, 0.212432, 0.962366, 0.833333, 1, -0.197486, 0.00342183, 0.217359, 0.955899, 0.866667, 1, -0.20688, -0.00128304, 0.230104, 0.950921, 0.9, 1, -0.194684, -0.00193852, 0.248813, 0.948782, 0.933333, 1, -0.164213, 0.00231133, 0.271453, 0.948336, 0.966667, 1, -0.120273, 0.011884, 0.29574, 0.947592, 1, 1, -0.0677396, 0.0266105, 0.319228, 0.944879, 1.03333, 1, -0.0114933, 0.0454515, 0.339527, 0.939427, 1.06667, 1, 0.0437561, 0.0664394, 0.354556, 0.931645, 1.1, 1, 0.0936447, 0.086843, 0.362736, 0.923099, 1.13333, 1, 0.134205, 0.103508, 0.36302, 0.916238, 1.16667, 1, 0.161688, 0.113444, 0.355316, 0.91364, 1.2, 1, 0.172105, 0.114807, 0.34197, 0.916655, 1.23333, 1, 0.162369, 0.107434, 0.325273, 0.925361, 1.26667, 1, 0.134745, 0.0938879, 0.306267, 0.937672, 1.3, 1, 0.0929822, 0.077208, 0.285731, 0.950658, 1.33333, 1, 0.0412136, 0.059985, 0.264753, 0.961566)
|
||||||
|
tracks/4/type = "rotation_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Armature/Skeleton3D:wing_1.R")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, -0.0286549, -0.188485, 0.686718, 0.701478, 0.0333333, 1, -0.0506094, -0.208724, 0.677509, 0.703459, 0.0666667, 1, -0.0610847, -0.215431, 0.666256, 0.71131, 0.1, 1, -0.05709, -0.207045, 0.655256, 0.724233, 0.133333, 1, -0.0396006, -0.186493, 0.644631, 0.74034, 0.166667, 1, -0.0107812, -0.157663, 0.633842, 0.757147, 0.2, 1, 0.0267386, -0.12419, 0.622616, 0.772147, 0.266667, 1, 0.114195, -0.0556545, 0.600903, 0.789163, 0.3, 1, 0.155982, -0.0253652, 0.59312, 0.789452, 0.333333, 1, 0.190651, -6.60251e-05, 0.590026, 0.784552, 0.366667, 1, 0.213966, 0.0185891, 0.593371, 0.775747, 0.4, 1, 0.222174, 0.0279345, 0.602828, 0.765805, 0.433333, 1, 0.213282, 0.0252487, 0.61726, 0.756877, 0.466667, 1, 0.19033, 0.0110549, 0.634785, 0.7488, 0.5, 1, 0.157487, -0.0130927, 0.653025, 0.740665, 0.533333, 1, 0.118744, -0.045142, 0.669545, 0.731827, 0.6, 1, 0.0378164, -0.121276, 0.689637, 0.712925, 0.633333, 1, 0.001578, -0.158023, 0.691096, 0.705275, 0.666667, 1, -0.0286549, -0.188485, 0.686718, 0.701478, 0.7, 1, -0.0506094, -0.208724, 0.677509, 0.703459, 0.733333, 1, -0.0610847, -0.215431, 0.666256, 0.71131, 0.766667, 1, -0.05709, -0.207045, 0.655256, 0.724233, 0.8, 1, -0.0396006, -0.186493, 0.644631, 0.74034, 0.833333, 1, -0.0107812, -0.157663, 0.633842, 0.757147, 0.866667, 1, 0.0267386, -0.12419, 0.622616, 0.772147, 0.933333, 1, 0.114195, -0.0556545, 0.600903, 0.789163, 0.966667, 1, 0.155982, -0.0253652, 0.59312, 0.789452, 1, 1, 0.190651, -6.60251e-05, 0.590026, 0.784552, 1.03333, 1, 0.213966, 0.0185891, 0.593371, 0.775747, 1.06667, 1, 0.222174, 0.0279345, 0.602828, 0.765805, 1.1, 1, 0.213282, 0.0252487, 0.61726, 0.756877, 1.13333, 1, 0.19033, 0.0110549, 0.634785, 0.7488, 1.16667, 1, 0.157487, -0.0130927, 0.653025, 0.740665, 1.2, 1, 0.118744, -0.045142, 0.669545, 0.731827, 1.26667, 1, 0.0378164, -0.121276, 0.689637, 0.712925, 1.3, 1, 0.001578, -0.158023, 0.691096, 0.705275, 1.33333, 1, -0.0286549, -0.188485, 0.686718, 0.701478)
|
||||||
|
tracks/5/type = "rotation_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Armature/Skeleton3D:wing_2.R")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, -0.0560155, 0.016041, -0.274838, 0.959724, 0.0333333, 1, -0.107724, 0.0293087, -0.260889, 0.958892, 0.0666667, 1, -0.150109, 0.0400536, -0.254681, 0.954464, 0.1, 1, -0.178377, 0.0485314, -0.258005, 0.948293, 0.133333, 1, -0.188128, 0.0538743, -0.269983, 0.94277, 0.166667, 1, -0.176689, 0.0543572, -0.288976, 0.939318, 0.2, 1, -0.147367, 0.0491943, -0.312801, 0.937026, 0.233333, 1, -0.104947, 0.0380736, -0.338908, 0.934172, 0.266667, 1, -0.0542423, 0.0212793, -0.364585, 0.929345, 0.3, 1, 4.35922e-07, -2.55374e-07, -0.387197, 0.921997, 0.333333, 1, 0.0532716, -0.023607, -0.404457, 0.912699, 0.366667, 1, 0.101459, -0.0465808, -0.414628, 0.903117, 0.4, 1, 0.140874, -0.0655118, -0.416552, 0.895738, 0.433333, 1, 0.168002, -0.0771313, -0.410045, 0.893134, 0.466667, 1, 0.178911, -0.0792831, -0.397312, 0.896576, 0.5, 1, 0.170442, -0.0715782, -0.380524, 0.906106, 0.533333, 1, 0.14463, -0.056739, -0.360771, 0.919623, 0.566667, 1, 0.104948, -0.0380741, -0.338908, 0.934172, 0.6, 1, 0.0552696, -0.0184505, -0.316108, 0.946932, 0.633333, 1, 3.97739e-07, -2.93199e-07, -0.294044, 0.955792, 0.666667, 1, -0.0560155, 0.016041, -0.274838, 0.959724, 0.7, 1, -0.107724, 0.0293087, -0.260889, 0.958892, 0.733333, 1, -0.150109, 0.0400536, -0.254681, 0.954464, 0.766667, 1, -0.178377, 0.0485314, -0.258005, 0.948293, 0.8, 1, -0.188128, 0.0538743, -0.269983, 0.94277, 0.833333, 1, -0.176689, 0.0543572, -0.288976, 0.939318, 0.866667, 1, -0.147367, 0.0491943, -0.312801, 0.937026, 0.9, 1, -0.104947, 0.0380736, -0.338908, 0.934172, 0.933333, 1, -0.0542423, 0.0212793, -0.364585, 0.929345, 0.966667, 1, 4.35922e-07, -2.55374e-07, -0.387197, 0.921997, 1, 1, 0.0532716, -0.023607, -0.404457, 0.912699, 1.03333, 1, 0.101459, -0.0465808, -0.414628, 0.903117, 1.06667, 1, 0.140874, -0.0655118, -0.416552, 0.895738, 1.1, 1, 0.168002, -0.0771313, -0.410045, 0.893134, 1.13333, 1, 0.178911, -0.0792831, -0.397312, 0.896576, 1.16667, 1, 0.170442, -0.0715782, -0.380524, 0.906106, 1.2, 1, 0.14463, -0.056739, -0.360771, 0.919623, 1.23333, 1, 0.104948, -0.0380741, -0.338908, 0.934172, 1.26667, 1, 0.0552696, -0.0184505, -0.316108, 0.946932, 1.3, 1, 3.97739e-07, -2.93199e-07, -0.294044, 0.955792, 1.33333, 1, -0.0560155, 0.016041, -0.274838, 0.959723)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("Armature/Skeleton3D:wing_3.R")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0.0412136, -0.059985, -0.264753, 0.961566, 0.0333333, 1, -0.0159354, -0.0440908, -0.244883, 0.968419, 0.0666667, 1, -0.073461, -0.0305335, -0.228073, 0.970389, 0.1, 1, -0.126218, -0.0194948, -0.21651, 0.967891, 0.133333, 1, -0.169154, -0.0105836, -0.212432, 0.962366, 0.166667, 1, -0.197486, -0.00342183, -0.217359, 0.955899, 0.2, 1, -0.20688, 0.00128304, -0.230104, 0.950921, 0.233333, 1, -0.194684, 0.00193852, -0.248813, 0.948782, 0.266667, 1, -0.164213, -0.00231133, -0.271453, 0.948336, 0.3, 1, -0.120273, -0.011884, -0.29574, 0.947592, 0.333333, 1, -0.0677396, -0.0266105, -0.319228, 0.944879, 0.366667, 1, -0.0114933, -0.0454515, -0.339527, 0.939427, 0.4, 1, 0.0437561, -0.0664394, -0.354556, 0.931645, 0.433333, 1, 0.0936447, -0.086843, -0.362736, 0.923099, 0.466667, 1, 0.134205, -0.103508, -0.36302, 0.916238, 0.5, 1, 0.161688, -0.113444, -0.355316, 0.91364, 0.533333, 1, 0.172105, -0.114807, -0.34197, 0.916655, 0.566667, 1, 0.162369, -0.107434, -0.325273, 0.925361, 0.6, 1, 0.134745, -0.0938879, -0.306267, 0.937672, 0.633333, 1, 0.0929822, -0.077208, -0.285731, 0.950658, 0.666667, 1, 0.0412136, -0.059985, -0.264753, 0.961566, 0.7, 1, -0.0159354, -0.0440908, -0.244883, 0.968419, 0.733333, 1, -0.073461, -0.0305335, -0.228073, 0.970389, 0.766667, 1, -0.126218, -0.0194948, -0.21651, 0.967891, 0.8, 1, -0.169154, -0.0105836, -0.212432, 0.962366, 0.833333, 1, -0.197486, -0.00342183, -0.217359, 0.955899, 0.866667, 1, -0.20688, 0.00128304, -0.230104, 0.950921, 0.9, 1, -0.194684, 0.00193852, -0.248813, 0.948782, 0.933333, 1, -0.164213, -0.00231133, -0.271453, 0.948336, 0.966667, 1, -0.120273, -0.011884, -0.29574, 0.947592, 1, 1, -0.0677396, -0.0266105, -0.319228, 0.944879, 1.03333, 1, -0.0114933, -0.0454515, -0.339527, 0.939427, 1.06667, 1, 0.0437561, -0.0664394, -0.354556, 0.931645, 1.1, 1, 0.0936447, -0.086843, -0.362736, 0.923099, 1.13333, 1, 0.134205, -0.103508, -0.36302, 0.916238, 1.16667, 1, 0.161688, -0.113444, -0.355316, 0.91364, 1.2, 1, 0.172105, -0.114807, -0.34197, 0.916655, 1.23333, 1, 0.162369, -0.107434, -0.325273, 0.925361, 1.26667, 1, 0.134745, -0.0938879, -0.306267, 0.937672, 1.3, 1, 0.0929822, -0.077208, -0.285731, 0.950658, 1.33333, 1, 0.0412136, -0.059985, -0.264753, 0.961566)
|
||||||
|
tracks/7/type = "position_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("Armature/Skeleton3D:foot.L")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, 0.130992, -0.227392, -0.0878515)
|
||||||
|
tracks/8/type = "rotation_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("Armature/Skeleton3D:foot.L")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, 0.261968, 0.0834551, 0.265751, 0.924004)
|
||||||
|
tracks/9/type = "rotation_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("Armature/Skeleton3D:foot_2.L")
|
||||||
|
tracks/9/interp = 1
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08, 0.0333333, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.0666667, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.133333, 1, 3.47263e-08, 0.60042, 0.799685, 2.08202e-08, 0.166667, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.2, 1, 3.92535e-08, 0.556296, 0.830985, 2.60857e-08, 0.233333, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.3, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.333333, 1, 3.40507e-08, 0.556296, 0.830985, 2.08829e-08, 0.366667, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.4, 1, 1.85956e-08, 0.60042, 0.799685, 2.6308e-08, 0.466667, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.5, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.533333, 1, 3.33283e-08, 0.690882, 0.722967, 2.18859e-08, 0.566667, 1, 3.86219e-08, 0.702774, 0.711413, 2.28649e-08, 0.633333, 1, 3.82926e-08, 0.702774, 0.711413, 2.25356e-08, 0.666667, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08, 0.7, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 0.733333, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 0.8, 1, 3.47263e-08, 0.60042, 0.799685, 2.08202e-08, 0.833333, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 0.866667, 1, 3.92535e-08, 0.556296, 0.830985, 2.60857e-08, 0.9, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 0.966667, 1, 2.84263e-08, 0.542441, 0.840094, 2.02176e-08, 1, 1, 3.40507e-08, 0.556296, 0.830985, 2.08829e-08, 1.03333, 1, 3.25479e-08, 0.576432, 0.817145, 1.90111e-08, 1.06667, 1, 1.85956e-08, 0.60042, 0.799685, 2.6308e-08, 1.13333, 1, 4.017e-08, 0.650774, 0.759271, 2.5428e-08, 1.16667, 1, 3.55166e-08, 0.673012, 0.739631, 2.06281e-08, 1.2, 1, 3.33283e-08, 0.690882, 0.722967, 2.18859e-08, 1.23333, 1, 3.86219e-08, 0.702774, 0.711413, 2.28649e-08, 1.3, 1, 3.82926e-08, 0.702774, 0.711413, 2.25356e-08, 1.33333, 1, 3.84334e-08, 0.690882, 0.722967, 1.64515e-08)
|
||||||
|
tracks/10/type = "position_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("Armature/Skeleton3D:foot.R")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, -0.130992, -0.227392, -0.0878515)
|
||||||
|
tracks/11/type = "rotation_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("Armature/Skeleton3D:foot.R")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.261968, -0.0834551, -0.265751, 0.924004)
|
||||||
|
tracks/12/type = "rotation_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("Armature/Skeleton3D:foot_2.R")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08, 0.0333333, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.0666667, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.133333, 1, 3.67218e-08, 0.60042, 0.799685, 4.70949e-08, 0.166667, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.2, 1, 2.33095e-08, 0.556296, 0.830984, 3.56522e-08, 0.233333, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.3, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.333333, 1, 2.31416e-08, 0.556296, 0.830984, 3.54843e-08, 0.366667, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.4, 1, 3.15666e-08, 0.60042, 0.799685, 3.09642e-08, 0.466667, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.5, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.533333, 1, 2.52591e-08, 0.690882, 0.722967, 3.62129e-08, 0.566667, 1, 2.11702e-08, 0.702774, 0.711413, 3.50482e-08, 0.633333, 1, 2.14994e-08, 0.702774, 0.711413, 3.53775e-08, 0.666667, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08, 0.7, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 0.733333, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 0.8, 1, 3.67218e-08, 0.60042, 0.799685, 4.70949e-08, 0.833333, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 0.866667, 1, 2.33095e-08, 0.556296, 0.830984, 3.56522e-08, 0.9, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 0.966667, 1, 2.52265e-08, 0.542441, 0.840094, 4.39632e-08, 1, 1, 2.31416e-08, 0.556296, 0.830984, 3.54843e-08, 1.03333, 1, 2.63662e-08, 0.576432, 0.817145, 4.85832e-08, 1.06667, 1, 3.15666e-08, 0.60042, 0.799685, 3.09642e-08, 1.13333, 1, 2.49787e-08, 0.650774, 0.759271, 3.23632e-08, 1.16667, 1, 2.11774e-08, 0.673013, 0.739631, 4.78233e-08, 1.2, 1, 2.52591e-08, 0.690882, 0.722967, 3.62129e-08, 1.23333, 1, 2.11702e-08, 0.702774, 0.711413, 3.50482e-08, 1.3, 1, 2.14994e-08, 0.702774, 0.711413, 3.53775e-08, 1.33333, 1, 2.54238e-08, 0.690882, 0.722967, 3.63776e-08)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_dmdl0"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Armature/Skeleton3D/bat:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Armature/Skeleton3D/bat:surface_material_override/0:albedo_color")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2h6wp"]
|
||||||
|
_data = {
|
||||||
|
&"Idle": SubResource("Animation_0gbdx"),
|
||||||
|
&"RESET": SubResource("Animation_dmdl0")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_xl0h5"]
|
||||||
|
length = 0.2
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Armature/Skeleton3D/bat:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.2),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1, 1, 1), Vector3(1.3, 1.3, 1.3), Vector3(1, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Armature/Skeleton3D/bat:surface_material_override/0:albedo_color")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.199951),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1), Color(0.843431, 0.0363174, 0.22484, 1), Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xjlni"]
|
||||||
|
_data = {
|
||||||
|
&"hurt": SubResource("Animation_xl0h5")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1xugm"]
|
||||||
|
animation = &"Idle"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0ebaf"]
|
||||||
|
animation = &"GodotBatMob/hurt"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_a7d3o"]
|
||||||
|
mix_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xl0h5"]
|
||||||
|
graph_offset = Vector2(-446.039, -41.214)
|
||||||
|
"nodes/Idle Loop/node" = SubResource("AnimationNodeAnimation_1xugm")
|
||||||
|
"nodes/Idle Loop/position" = Vector2(200, 60)
|
||||||
|
"nodes/Mob Hurt/node" = SubResource("AnimationNodeAnimation_0ebaf")
|
||||||
|
"nodes/Mob Hurt/position" = Vector2(200, 240)
|
||||||
|
nodes/OneShot/node = SubResource("AnimationNodeOneShot_a7d3o")
|
||||||
|
nodes/OneShot/position = Vector2(440, 20)
|
||||||
|
nodes/output/position = Vector2(640, 160)
|
||||||
|
node_connections = [&"OneShot", 0, &"Idle Loop", &"OneShot", 1, &"Mob Hurt", &"output", 0, &"OneShot"]
|
||||||
|
|
||||||
|
[node name="bat_model" instance=ExtResource("1_12yrx")]
|
||||||
|
script = ExtResource("2_dmdl0")
|
||||||
|
|
||||||
|
[node name="Skeleton3D" parent="Armature" index="0"]
|
||||||
|
bones/0/position = Vector3(0, -0.0172648, 0)
|
||||||
|
bones/1/rotation = Quaternion(0.0466063, 0.108788, -0.618407, 0.776895)
|
||||||
|
bones/2/rotation = Quaternion(-0.128204, -0.0441741, 0.324725, 0.936037)
|
||||||
|
bones/3/rotation = Quaternion(-0.201371, -0.00157988, 0.238589, 0.950012)
|
||||||
|
bones/4/rotation = Quaternion(0.0466063, -0.108788, 0.618407, 0.776895)
|
||||||
|
bones/5/rotation = Quaternion(-0.128204, 0.0441741, -0.324725, 0.936037)
|
||||||
|
bones/6/rotation = Quaternion(-0.201371, 0.00157988, -0.238589, 0.950012)
|
||||||
|
bones/7/position = Vector3(0.130992, -0.227392, -0.0878515)
|
||||||
|
bones/7/rotation = Quaternion(0.261968, 0.0834552, 0.265751, 0.924005)
|
||||||
|
bones/8/rotation = Quaternion(3.43531e-08, 0.550042, 0.835137, 2.34299e-08)
|
||||||
|
bones/10/position = Vector3(-0.130992, -0.227392, -0.0878515)
|
||||||
|
bones/10/rotation = Quaternion(0.261968, -0.0834552, -0.265751, 0.924005)
|
||||||
|
bones/11/rotation = Quaternion(2.41782e-08, 0.550043, 0.835137, 3.9416e-08)
|
||||||
|
|
||||||
|
[node name="bat" parent="Armature/Skeleton3D" index="0"]
|
||||||
|
surface_material_override/0 = ExtResource("2_vofu1")
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" parent="." index="1"]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_2h6wp"),
|
||||||
|
&"GodotBatMob": SubResource("AnimationLibrary_xjlni")
|
||||||
|
}
|
||||||
|
autoplay = "Idle"
|
||||||
|
|
||||||
|
[node name="AnimationTree" type="AnimationTree" parent="." index="2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
root_node = NodePath("%AnimationTree/..")
|
||||||
|
tree_root = SubResource("AnimationNodeBlendTree_xl0h5")
|
||||||
|
anim_player = NodePath("../AnimationPlayer")
|
||||||
|
parameters/OneShot/active = false
|
||||||
|
parameters/OneShot/internal_active = false
|
||||||
|
parameters/OneShot/request = 0
|
||||||
BIN
mob/gun_shoot.wav
Normal file
24
mob/gun_shoot.wav.import
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cmavoyb45x73f"
|
||||||
|
path="res://.godot/imported/gun_shoot.wav-f8b83b393a231b2e7b3abfb1a84846ed.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/gun_shoot.wav"
|
||||||
|
dest_files=["res://.godot/imported/gun_shoot.wav-f8b83b393a231b2e7b3abfb1a84846ed.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
BIN
mob/mob_ko.wav
Normal file
24
mob/mob_ko.wav.import
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://hghb3bqm52oh"
|
||||||
|
path="res://.godot/imported/mob_ko.wav-a84710604b4b98be9d6d7dfe1978d9ee.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/mob_ko.wav"
|
||||||
|
dest_files=["res://.godot/imported/mob_ko.wav-a84710604b4b98be9d6d7dfe1978d9ee.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
BIN
mob/mob_take_damage.wav
Normal file
24
mob/mob_take_damage.wav.import
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cvge1n06euj5o"
|
||||||
|
path="res://.godot/imported/mob_take_damage.wav-1cdfbd77e9c3f3326daadc27788f65ff.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/mob_take_damage.wav"
|
||||||
|
dest_files=["res://.godot/imported/mob_take_damage.wav-1cdfbd77e9c3f3326daadc27788f65ff.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
70
mob/player.tscn
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
[gd_scene load_steps=8 format=3 uid="uid://h8tyroiwkr42"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://l1gxoouxv4bc" path="res://player/player.gd" id="1_rkbax"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dkb2mu7n4t308" path="res://player/gun_model.tscn" id="3_8441p"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://daxb87ykphjeh" path="res://player/reticle.png" id="3_g1dw6"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cmavoyb45x73f" path="res://mob/gun_shoot.wav" id="4_th40c"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kqu6x"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_th40c"]
|
||||||
|
bg_color = Color(0.223529, 0.223529, 0.223529, 0.729412)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8441p"]
|
||||||
|
bg_color = Color(0.179649, 0.626318, 0.30983, 1)
|
||||||
|
|
||||||
|
[node name="Player" type="CharacterBody3D"]
|
||||||
|
collision_layer = 5
|
||||||
|
collision_mask = 3
|
||||||
|
script = ExtResource("1_rkbax")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_kqu6x")
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51802, 0)
|
||||||
|
|
||||||
|
[node name="gun_model" parent="Camera3D" instance=ExtResource("3_8441p")]
|
||||||
|
transform = Transform3D(-0.399518, 0.00318013, -0.0193816, 0.000692473, 0.396757, 0.0508259, 0.0196285, 0.050731, -0.396284, 0.493558, -0.233074, -0.568753)
|
||||||
|
|
||||||
|
[node name="Marker3D" type="Marker3D" parent="Camera3D/gun_model"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-0.999988, 0.00484524, 0.000349712, 0.00485513, 0.994434, 0.105259, 0.000162303, 0.10526, -0.994445, 0.0103973, 0.00791597, 0.639051)
|
||||||
|
|
||||||
|
[node name="ShootTimer" type="Timer" parent="Camera3D/gun_model"]
|
||||||
|
wait_time = 0.2
|
||||||
|
|
||||||
|
[node name="Reticle" type="TextureRect" parent="."]
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -23.0
|
||||||
|
offset_top = -23.0
|
||||||
|
offset_right = 23.0
|
||||||
|
offset_bottom = 23.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("3_g1dw6")
|
||||||
|
expand_mode = 1
|
||||||
|
|
||||||
|
[node name="HealthBar" type="ProgressBar" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
offset_left = 30.0
|
||||||
|
offset_top = 30.0
|
||||||
|
offset_right = 280.0
|
||||||
|
offset_bottom = 50.0
|
||||||
|
theme_override_styles/background = SubResource("StyleBoxFlat_th40c")
|
||||||
|
theme_override_styles/fill = SubResource("StyleBoxFlat_8441p")
|
||||||
|
value = 50.0
|
||||||
|
rounded = true
|
||||||
|
show_percentage = false
|
||||||
|
|
||||||
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("4_th40c")
|
||||||
|
volume_db = -5.0
|
||||||
|
|
||||||
|
[connection signal="timeout" from="Camera3D/gun_model/ShootTimer" to="." method="_on_shoot_timer_timeout"]
|
||||||
70
mob/smoke_puff/material/inner_smoke.gdshader
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode shadows_disabled, cull_back;
|
||||||
|
|
||||||
|
uniform vec3 albedo : source_color;
|
||||||
|
|
||||||
|
varying float voronoi_value;
|
||||||
|
|
||||||
|
uniform float progress = 0.0;
|
||||||
|
uniform float smoothness = 0.01;
|
||||||
|
|
||||||
|
uniform float ease = 2.0;
|
||||||
|
uniform float base_scale = 1.0;
|
||||||
|
uniform float deformation_scale = 1.0;
|
||||||
|
|
||||||
|
uniform float texture_offset = 0.0;
|
||||||
|
|
||||||
|
uniform float fresnel_offset = 1.0;
|
||||||
|
uniform float global_alpha = 1.0;
|
||||||
|
|
||||||
|
// Voronoi method credit:
|
||||||
|
// The MIT License
|
||||||
|
// Copyright © 2013 Inigo Quilez
|
||||||
|
// https://www.shadertoy.com/view/ldl3Dl
|
||||||
|
|
||||||
|
vec3 hash( vec3 x ){
|
||||||
|
x = vec3( dot(x,vec3(127.1,311.7, 74.7)),
|
||||||
|
dot(x,vec3(269.5,183.3,246.1)),
|
||||||
|
dot(x,vec3(113.5,271.9,124.6)));
|
||||||
|
return fract(sin(x)*43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 voronoi( in vec3 x ){
|
||||||
|
vec3 p = floor( x );
|
||||||
|
vec3 f = fract( x );
|
||||||
|
|
||||||
|
float id = 0.0;
|
||||||
|
vec2 res = vec2( 100.0 );
|
||||||
|
for( int k=-1; k<=1; k++ )
|
||||||
|
for( int j=-1; j<=1; j++ )
|
||||||
|
for( int i=-1; i<=1; i++ ) {
|
||||||
|
vec3 b = vec3( float(i), float(j), float(k) );
|
||||||
|
vec3 r = vec3( b ) - f + hash( p + b );
|
||||||
|
float d = dot( r, r );
|
||||||
|
if( d < res.x ) {
|
||||||
|
id = dot( p+b, vec3(1.0,57.0,113.0 ) );
|
||||||
|
res = vec2( d, res.x );
|
||||||
|
} else if( d < res.y ) {
|
||||||
|
res.y = d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vec3( sqrt( res ), abs(id) );
|
||||||
|
}
|
||||||
|
|
||||||
|
float fresnel(vec3 normal, vec3 view, float amount){
|
||||||
|
return pow(1.0 - clamp(dot(normal, view), 0.0, 1.0), amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
float smooth_df = deformation_scale;
|
||||||
|
voronoi_value = voronoi(VERTEX + texture_offset).x;
|
||||||
|
VERTEX += NORMAL * (1.0 - pow(voronoi_value, ease)) * smooth_df;
|
||||||
|
VERTEX *= base_scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment(){
|
||||||
|
ALBEDO = albedo;
|
||||||
|
EMISSION = albedo * 0.5;
|
||||||
|
ALPHA = 1.0 - fresnel(NORMAL, VIEW, 2.0 * fresnel_offset);
|
||||||
|
ALPHA *= global_alpha;
|
||||||
|
}
|
||||||
1
mob/smoke_puff/material/inner_smoke.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://0h8qjtcpk0mk
|
||||||
17
mob/smoke_puff/material/inner_smoke.tres
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://dr7gyunhpjiwf"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" path="res://mob/smoke_puff/material/inner_smoke.gdshader" id="1_6ucfb"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_6ucfb")
|
||||||
|
shader_parameter/albedo = Color(1, 0.537255, 0.792157, 1)
|
||||||
|
shader_parameter/progress = 0.0
|
||||||
|
shader_parameter/smoothness = 0.01
|
||||||
|
shader_parameter/ease = 2.0
|
||||||
|
shader_parameter/base_scale = 1.1
|
||||||
|
shader_parameter/deformation_scale = 1.0
|
||||||
|
shader_parameter/texture_offset = 0.1
|
||||||
|
shader_parameter/fresnel_offset = 0.5
|
||||||
|
shader_parameter/global_alpha = 0.0
|
||||||
64
mob/smoke_puff/material/outer_smoke.gdshader
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode shadows_disabled, cull_disabled;
|
||||||
|
|
||||||
|
uniform vec3 albedo : source_color;
|
||||||
|
|
||||||
|
varying float voronoi_value;
|
||||||
|
|
||||||
|
uniform float progress = 0.0;
|
||||||
|
uniform float smoothness = 0.01;
|
||||||
|
|
||||||
|
uniform float ease = 2.0;
|
||||||
|
uniform float base_scale = 1.0;
|
||||||
|
uniform float deformation_scale = 1.0;
|
||||||
|
|
||||||
|
uniform float texture_offset = 0.0;
|
||||||
|
|
||||||
|
// Voronoi method credit:
|
||||||
|
// The MIT License
|
||||||
|
// Copyright © 2013 Inigo Quilez
|
||||||
|
// https://www.shadertoy.com/view/ldl3Dl
|
||||||
|
|
||||||
|
vec3 hash( vec3 x ){
|
||||||
|
x = vec3( dot(x,vec3(127.1,311.7, 74.7)),
|
||||||
|
dot(x,vec3(269.5,183.3,246.1)),
|
||||||
|
dot(x,vec3(113.5,271.9,124.6)));
|
||||||
|
return fract(sin(x)*43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 voronoi( in vec3 x ){
|
||||||
|
vec3 p = floor( x );
|
||||||
|
vec3 f = fract( x );
|
||||||
|
|
||||||
|
float id = 0.0;
|
||||||
|
vec2 res = vec2( 100.0 );
|
||||||
|
for( int k=-1; k<=1; k++ )
|
||||||
|
for( int j=-1; j<=1; j++ )
|
||||||
|
for( int i=-1; i<=1; i++ ) {
|
||||||
|
vec3 b = vec3( float(i), float(j), float(k) );
|
||||||
|
vec3 r = vec3( b ) - f + hash( p + b );
|
||||||
|
float d = dot( r, r );
|
||||||
|
if( d < res.x ) {
|
||||||
|
id = dot( p+b, vec3(1.0,57.0,113.0 ) );
|
||||||
|
res = vec2( d, res.x );
|
||||||
|
} else if( d < res.y ) {
|
||||||
|
res.y = d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vec3( sqrt( res ), abs(id) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
float smooth_df = deformation_scale;
|
||||||
|
voronoi_value = voronoi(VERTEX + texture_offset).x;
|
||||||
|
VERTEX += NORMAL * (1.0 - pow(voronoi_value, ease)) * smooth_df;
|
||||||
|
VERTEX *= base_scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment(){
|
||||||
|
ALBEDO = albedo;
|
||||||
|
EMISSION = albedo * 0.5;
|
||||||
|
ALPHA = smoothstep(progress - smoothness, progress + smoothness, voronoi_value);
|
||||||
|
ALPHA_SCISSOR_THRESHOLD = 0.5;
|
||||||
|
}
|
||||||
1
mob/smoke_puff/material/outer_smoke.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://spi71y1qu06o
|
||||||
15
mob/smoke_puff/material/outer_smoke.tres
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://ctnipgxo3l72h"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" path="res://mob/smoke_puff/material/outer_smoke.gdshader" id="1_0emiy"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_0emiy")
|
||||||
|
shader_parameter/albedo = Color(0.937255, 0.698039, 1, 1)
|
||||||
|
shader_parameter/progress = 1.8
|
||||||
|
shader_parameter/smoothness = 0.1
|
||||||
|
shader_parameter/ease = 3.0
|
||||||
|
shader_parameter/base_scale = 1.2
|
||||||
|
shader_parameter/deformation_scale = 1.5
|
||||||
|
shader_parameter/texture_offset = -0.5
|
||||||
BIN
mob/smoke_puff/poof.res
Normal file
BIN
mob/smoke_puff/poof_sound.wav
Normal file
24
mob/smoke_puff/poof_sound.wav.import
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://ki0nh5lgryca"
|
||||||
|
path="res://.godot/imported/poof_sound.wav-36d715cee95c69d05b3317b1fcb4cc24.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/smoke_puff/poof_sound.wav"
|
||||||
|
dest_files=["res://.godot/imported/poof_sound.wav-36d715cee95c69d05b3317b1fcb4cc24.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
34
mob/smoke_puff/smoke_puff.tscn
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[gd_scene load_steps=7 format=3 uid="uid://cjk3frr43yesb"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://ctnipgxo3l72h" path="res://mob/smoke_puff/material/outer_smoke.tres" id="2_1f3c4"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://cxh3afoly2pv6" path="res://mob/smoke_puff/smoke_sphere.obj" id="3_2ucfv"]
|
||||||
|
[ext_resource type="Material" uid="uid://dr7gyunhpjiwf" path="res://mob/smoke_puff/material/inner_smoke.tres" id="4_8vcwr"]
|
||||||
|
[ext_resource type="Animation" uid="uid://drrd257af7jpy" path="res://mob/smoke_puff/poof.res" id="5_yvyul"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://dyj752n6nuwa6" path="res://mob/smoke_puff/poof_sound.wav" id="6_8rosm"]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a08pi"]
|
||||||
|
_data = {
|
||||||
|
"poof": ExtResource("5_yvyul")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="smoke_puff" type="Node3D"]
|
||||||
|
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="OuterSmoke" type="MeshInstance3D" parent="."]
|
||||||
|
material_override = ExtResource("2_1f3c4")
|
||||||
|
mesh = ExtResource("3_2ucfv")
|
||||||
|
|
||||||
|
[node name="InnerSmoke" type="MeshInstance3D" parent="."]
|
||||||
|
material_override = ExtResource("4_8vcwr")
|
||||||
|
mesh = ExtResource("3_2ucfv")
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
libraries = {
|
||||||
|
"": SubResource("AnimationLibrary_a08pi")
|
||||||
|
}
|
||||||
|
autoplay = "poof"
|
||||||
|
|
||||||
|
[node name="Sound" type="AudioStreamPlayer3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("6_8rosm")
|
||||||
6197
mob/smoke_puff/smoke_sphere.obj
Normal file
25
mob/smoke_puff/smoke_sphere.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://vsovom3bufqe"
|
||||||
|
path="res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"]
|
||||||
|
|
||||||
|
source_file="res://mob/smoke_puff/smoke_sphere.obj"
|
||||||
|
dest_files=["res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh", "res://.godot/imported/smoke_sphere.obj-7dec537f94ed12354ea65934deb2dc4e.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
16
mob/spawner/mob_spawner_3d.gd
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var mob_to_spawn: PackedScene = null
|
||||||
|
|
||||||
|
signal mob_spawned(mob: Node)
|
||||||
|
|
||||||
|
@onready var marker_3d: Marker3D = %Marker3D
|
||||||
|
@onready var timer: Timer = %Timer
|
||||||
|
|
||||||
|
|
||||||
|
func _on_timer_timeout() -> void:
|
||||||
|
var new_mob := mob_to_spawn.instantiate()
|
||||||
|
add_child(new_mob)
|
||||||
|
new_mob.global_transform = marker_3d.global_transform
|
||||||
|
|
||||||
|
mob_spawned.emit(new_mob)
|
||||||
1
mob/spawner/mob_spawner_3d.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cu4e7af7nx5al
|
||||||
21
mob/spawner/mob_spawner_3d.tscn
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://c0ky5ie5cfgh2"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cu4e7af7nx5al" path="res://mob/spawner/mob_spawner_3d.gd" id="1_ewxdg"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dtf66or38qi43" path="res://mob/spawner/spawner_model.tscn" id="2_ewxdg"]
|
||||||
|
|
||||||
|
[node name="MobSpawner3D" type="Node3D"]
|
||||||
|
script = ExtResource("1_ewxdg")
|
||||||
|
|
||||||
|
[node name="spawner_model" parent="." instance=ExtResource("2_ewxdg")]
|
||||||
|
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 2.5, 0)
|
||||||
|
|
||||||
|
[node name="Marker3D" type="Marker3D" parent="spawner_model"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, -1.4, 0)
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
wait_time = 5.0
|
||||||
|
autostart = true
|
||||||
|
|
||||||
|
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||||
17
mob/spawner/spawner_halo.gdshader
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
uniform vec3 color : source_color;
|
||||||
|
|
||||||
|
float fresnel(float amount, vec3 normal, vec3 view)
|
||||||
|
{
|
||||||
|
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
float f = fresnel(0.8, NORMAL, VIEW);
|
||||||
|
float wave = abs((sin((UV.y - TIME * 0.1) * 10.0 * PI) + 1.0) / 2.0);
|
||||||
|
ALBEDO = color;
|
||||||
|
EMISSION = color * 2.0;
|
||||||
|
ALPHA = step(UV.y, wave) * (1.0 - UV.y) * (1.0 - f);
|
||||||
|
|
||||||
|
}
|
||||||
1
mob/spawner/spawner_halo.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cfnwyva3u4qeb
|
||||||
BIN
mob/spawner/spawner_model.glb
Normal file
37
mob/spawner/spawner_model.glb.import
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://diiskgqfi7kay"
|
||||||
|
path="res://.godot/imported/spawner_model.glb-2fcf57184c75ae05a59f6df1a9d9c89b.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/spawner/spawner_model.glb"
|
||||||
|
dest_files=["res://.godot/imported/spawner_model.glb-2fcf57184c75ae05a59f6df1a9d9c89b.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
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
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
85
mob/spawner/spawner_model.tscn
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
[gd_scene load_steps=10 format=3 uid="uid://dtf66or38qi43"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://diiskgqfi7kay" path="res://mob/spawner/spawner_model.glb" id="1_bk78j"]
|
||||||
|
[ext_resource type="Shader" uid="uid://cfnwyva3u4qeb" path="res://mob/spawner/spawner_halo.gdshader" id="2_lvlhh"]
|
||||||
|
[ext_resource type="Material" uid="uid://jvnbftghahty" path="res://mob/spawner/spawner_screen_material.tres" id="3_p6j4b"]
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_rug3p"]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("2_lvlhh")
|
||||||
|
shader_parameter/color = Color(0.13153, 0.557624, 0.421582, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2xi82"]
|
||||||
|
albedo_color = Color(0.879323, 0.706001, 0.185322, 1)
|
||||||
|
metallic = 0.45
|
||||||
|
metallic_specular = 0.75
|
||||||
|
roughness = 0.25
|
||||||
|
rim_enabled = true
|
||||||
|
rim = 0.1
|
||||||
|
rim_tint = 0.4
|
||||||
|
clearcoat_enabled = true
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bk78j"]
|
||||||
|
albedo_color = Color(0.646029, 0.646029, 0.646029, 1)
|
||||||
|
metallic = 0.5
|
||||||
|
roughness = 0.1
|
||||||
|
rim_enabled = true
|
||||||
|
rim = 0.1
|
||||||
|
clearcoat_enabled = true
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_lvlhh"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Top:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, -2.0944, 0)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_bk78j"]
|
||||||
|
resource_name = "idle"
|
||||||
|
length = 0.5
|
||||||
|
loop_mode = 1
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Top:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.5),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, 0), Vector3(0, 6.28319, 0)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p6j4b"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_lvlhh"),
|
||||||
|
&"idle": SubResource("Animation_bk78j")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="spawner_model" instance=ExtResource("1_bk78j")]
|
||||||
|
|
||||||
|
[node name="halo" parent="." index="0"]
|
||||||
|
material_override = SubResource("ShaderMaterial_rug3p")
|
||||||
|
|
||||||
|
[node name="Body" parent="." index="1"]
|
||||||
|
surface_material_override/0 = SubResource("StandardMaterial3D_2xi82")
|
||||||
|
surface_material_override/1 = ExtResource("3_p6j4b")
|
||||||
|
|
||||||
|
[node name="Top" parent="." index="2"]
|
||||||
|
transform = Transform3D(-0.500004, 0, -0.866023, 0, 1, 0, 0.866023, 0, -0.500004, 0, 0.783957, 0)
|
||||||
|
material_override = SubResource("StandardMaterial3D_bk78j")
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="3"]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_p6j4b")
|
||||||
|
}
|
||||||
|
autoplay = "idle"
|
||||||
29
mob/spawner/spawner_screen.gdshader
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
|
||||||
|
uniform vec4 screen_color : source_color;
|
||||||
|
uniform sampler2D text_sampler : filter_nearest, repeat_enable;
|
||||||
|
|
||||||
|
uniform float ratio = 1.0;
|
||||||
|
|
||||||
|
uniform float pixel_size = 20.0;
|
||||||
|
|
||||||
|
uniform float intensity = 1.5;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec2 scaled_uv = round(UV * pixel_size) / pixel_size;
|
||||||
|
|
||||||
|
vec2 grid_2d = sin(fract(UV * pixel_size + 0.5) * 3.14);
|
||||||
|
float grid = grid_2d.x * grid_2d.y;
|
||||||
|
grid = grid * 0.6 + 0.4;
|
||||||
|
|
||||||
|
float text = 1.0 - texture(text_sampler, scaled_uv * vec2(ratio, 1.0) + vec2(mod(TIME * 0.1, 1.0), 0.0)).x;
|
||||||
|
|
||||||
|
|
||||||
|
ALBEDO = vec3(0.0);
|
||||||
|
SPECULAR = 0.25;
|
||||||
|
ROUGHNESS = 0.45;
|
||||||
|
|
||||||
|
|
||||||
|
EMISSION = mix(screen_color.rgb * text, screen_color.rgb, screen_color.a) * grid * intensity;
|
||||||
|
|
||||||
|
}
|
||||||
1
mob/spawner/spawner_screen.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dhuj314m3wv1c
|
||||||
13
mob/spawner/spawner_screen_material.tres
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://jvnbftghahty"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://dhuj314m3wv1c" path="res://mob/spawner/spawner_screen.gdshader" id="1_3sboa"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cioq2g05svse6" path="res://mob/spawner/spawner_text.png" id="2_871b8"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_3sboa")
|
||||||
|
shader_parameter/screen_color = Color(0.336095, 0.77375, 0.569932, 0.027451)
|
||||||
|
shader_parameter/text_sampler = ExtResource("2_871b8")
|
||||||
|
shader_parameter/ratio = 0.25
|
||||||
|
shader_parameter/pixel_size = 32.0
|
||||||
|
shader_parameter/intensity = 1.5
|
||||||
BIN
mob/spawner/spawner_text.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
36
mob/spawner/spawner_text.png.import
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cioq2g05svse6"
|
||||||
|
path.s3tc="res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://mob/spawner/spawner_text.png"
|
||||||
|
dest_files=["res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.s3tc.ctex", "res://.godot/imported/spawner_text.png-cddf989d7fb9d0d1fac3e9ed8d7837e4.etc2.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
|
||||||
22
player/bullet_3d.gd
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
extends Area3D
|
||||||
|
|
||||||
|
const SPEED = 55.0
|
||||||
|
const RANGE = 80.0
|
||||||
|
|
||||||
|
var travelled_distance = 0.0
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
var distance = SPEED * delta
|
||||||
|
position += -transform.basis.z * distance
|
||||||
|
|
||||||
|
if travelled_distance >= RANGE:
|
||||||
|
queue_free()
|
||||||
|
else:
|
||||||
|
travelled_distance += distance
|
||||||
|
|
||||||
|
|
||||||
|
func _on_body_entered(body: Node3D) -> void:
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
if body.has_method("take_damage"):
|
||||||
|
body.take_damage(randf_range(25.0, 50.0))
|
||||||
1
player/bullet_3d.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cjqjeylpmrmth
|
||||||
19
player/bullet_3d.tscn
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://ct6nuuuphybba"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cjqjeylpmrmth" path="res://player/bullet_3d.gd" id="1_hgguu"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b2dxu3lnx1jx5" path="res://player/projectile/projectile_3d.tscn" id="1_kixxk"]
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_hgguu"]
|
||||||
|
radius = 0.238564
|
||||||
|
|
||||||
|
[node name="Bullet3D" type="Area3D"]
|
||||||
|
top_level = true
|
||||||
|
collision_mask = 3
|
||||||
|
script = ExtResource("1_hgguu")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
shape = SubResource("SphereShape3D_hgguu")
|
||||||
|
|
||||||
|
[node name="Projectile3D" parent="." instance=ExtResource("1_kixxk")]
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
BIN
player/cookie/Cookie.glb
Normal file
37
player/cookie/Cookie.glb.import
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://dbnc0jij3obmp"
|
||||||
|
path="res://.godot/imported/Cookie.glb-a84f141391d2f606ef2284a88ee937af.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/cookie/Cookie.glb"
|
||||||
|
dest_files=["res://.godot/imported/Cookie.glb-a84f141391d2f606ef2284a88ee937af.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
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
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
52
player/cookie/cookie_model.tscn
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
[gd_scene load_steps=5 format=3 uid="uid://ci5254r7er0uc"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbnc0jij3obmp" path="res://player/cookie/Cookie.glb" id="1_nk7nc"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_nsu0p"]
|
||||||
|
resource_name = "idle"
|
||||||
|
length = 3.0
|
||||||
|
loop_mode = 1
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Cookie:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 3),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, -0.785398), Vector3(0, 6.28319, -0.785398)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_a8ig3"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Cookie:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, 0, -0.785398)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2flrl"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_a8ig3"),
|
||||||
|
&"idle": SubResource("Animation_nsu0p")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="cookie_model" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="Cookie" parent="." instance=ExtResource("1_nk7nc")]
|
||||||
|
transform = Transform3D(0.0212132, 0.0212132, 0, -0.0212132, 0.0212132, 0, 0, 0, 0.03, 0, 0.6, 0)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_2flrl")
|
||||||
|
}
|
||||||
|
autoplay = "idle"
|
||||||
17
player/cookie_3d.gd
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
extends Area3D
|
||||||
|
|
||||||
|
var food_ready: bool = true
|
||||||
|
|
||||||
|
func _on_body_entered(body: Node3D) -> void:
|
||||||
|
if body.has_method("heal") and food_ready == true:
|
||||||
|
$cookie_model.visible = false
|
||||||
|
food_ready = false
|
||||||
|
body.heal()
|
||||||
|
%RespawnTimer.start()
|
||||||
|
else:
|
||||||
|
print(str(body) + " wants to eat a cookie, but doesn't know how!")
|
||||||
|
return
|
||||||
|
|
||||||
|
func _on_respawn_timer_timeout() -> void:
|
||||||
|
food_ready = true
|
||||||
|
$cookie_model.visible = true
|
||||||
1
player/cookie_3d.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dowji2oraklfp
|
||||||
24
player/cookie_3d.tscn
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://ht0ktfrqr1ef"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dowji2oraklfp" path="res://player/cookie_3d.gd" id="1_ta3vh"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ci5254r7er0uc" path="res://player/cookie/cookie_model.tscn" id="1_yyge1"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ta3vh"]
|
||||||
|
height = 1.2
|
||||||
|
|
||||||
|
[node name="cookie_3d" type="Area3D"]
|
||||||
|
script = ExtResource("1_ta3vh")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_ta3vh")
|
||||||
|
|
||||||
|
[node name="cookie_model" parent="." instance=ExtResource("1_yyge1")]
|
||||||
|
|
||||||
|
[node name="RespawnTimer" type="Timer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
wait_time = 15.0
|
||||||
|
one_shot = true
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
|
[connection signal="timeout" from="RespawnTimer" to="." method="_on_respawn_timer_timeout"]
|
||||||
6
player/gun_model.gd
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
||||||
|
|
||||||
|
func recoil() -> void:
|
||||||
|
animation_player.play("recoil")
|
||||||
1
player/gun_model.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dwu1ndn4oojx4
|
||||||
78
player/gun_model.tscn
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
[gd_scene load_steps=6 format=3 uid="uid://dkb2mu7n4t308"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://buif8h7ixc1cy" path="res://player/simple_gun/gun_model.glb" id="1_81uiy"]
|
||||||
|
[ext_resource type="Script" uid="uid://dwu1ndn4oojx4" path="res://player/gun_model.gd" id="2_3tpoa"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_3tpoa"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("BlueGun:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, -1.5708, 0)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("BlueGun:position")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, -0.299353, -0.146614)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_81uiy"]
|
||||||
|
resource_name = "recoil"
|
||||||
|
length = 0.2
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("BlueGun:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, -1.5708, 0), Vector3(1.13133e-08, -1.5708, 0.261799), Vector3(1.85986e-08, -1.5708, 0.436332), Vector3(9.29928e-09, -1.5708, 0.218166), Vector3(0, -1.5708, 0)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("BlueGun:position")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0, -0.299353, -0.146614), Vector3(0, -0.299353, -0.246614), Vector3(0, -0.299353, -0.196614), Vector3(0, -0.299353, -0.146614)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3tpoa"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_3tpoa"),
|
||||||
|
&"recoil": SubResource("Animation_81uiy")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="gun_model" instance=ExtResource("1_81uiy")]
|
||||||
|
script = ExtResource("2_3tpoa")
|
||||||
|
|
||||||
|
[node name="BlueGun" parent="." index="0"]
|
||||||
|
transform = Transform3D(-3.61999e-06, 0, -1, 0, 1, 0, 1, 0, -3.61999e-06, 0, -0.299353, -0.146614)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_3tpoa")
|
||||||
|
}
|
||||||
|
speed_scale = 1.25
|
||||||
83
player/player.gd
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
extends CharacterBody3D
|
||||||
|
|
||||||
|
const SPEED: float = 7
|
||||||
|
const HEALTH_MAX: float = 100.0
|
||||||
|
const MOUSE_SENSE: float = 0.35
|
||||||
|
|
||||||
|
var health: float = 50.0
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
|
|
||||||
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
|
if (Input.mouse_mode == Input.MOUSE_MODE_CAPTURED):
|
||||||
|
if (event is InputEventMouseMotion):
|
||||||
|
rotation_degrees.y -= event.relative.x * MOUSE_SENSE
|
||||||
|
$Camera3D.rotation_degrees.x -= event.relative.y * MOUSE_SENSE
|
||||||
|
$Camera3D.rotation_degrees.x = clamp(
|
||||||
|
$Camera3D.rotation_degrees.x, -85.0, 85.0
|
||||||
|
)
|
||||||
|
elif (event is InputEventMouseButton):
|
||||||
|
match event.button_index:
|
||||||
|
MOUSE_BUTTON_LEFT:
|
||||||
|
var timer: Timer = $Camera3D/gun_model/ShootTimer
|
||||||
|
if (event.is_pressed()):
|
||||||
|
print("left MB pressed")
|
||||||
|
$Camera3D/gun_model.recoil()
|
||||||
|
shoot()
|
||||||
|
timer.start()
|
||||||
|
else:
|
||||||
|
print("left MB released")
|
||||||
|
timer.stop()
|
||||||
|
_:
|
||||||
|
# unhandled mouse events
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# other unhandled input
|
||||||
|
pass
|
||||||
|
|
||||||
|
func _input(event: InputEvent) -> void:
|
||||||
|
if event.is_action_pressed("ui_cancel"):
|
||||||
|
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
|
else:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
%HealthBar.set("value", health)
|
||||||
|
|
||||||
|
# Player model camera is -Z aligned
|
||||||
|
var input_direction_2D = Input.get_vector(
|
||||||
|
"move_left", "move_right", "move_forward", "move_back"
|
||||||
|
)
|
||||||
|
|
||||||
|
var direction = transform.basis * Vector3(
|
||||||
|
input_direction_2D.x, 0.0, input_direction_2D.y
|
||||||
|
)
|
||||||
|
|
||||||
|
velocity.x = direction.x * SPEED
|
||||||
|
velocity.z = direction.z * SPEED
|
||||||
|
|
||||||
|
velocity.y -= 9.80665 * delta
|
||||||
|
if Input.is_action_just_pressed("jump") and is_on_floor():
|
||||||
|
velocity.y = 3.5
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
func shoot() -> void:
|
||||||
|
const BULLET_3D = preload("res://player/bullet_3d.tscn")
|
||||||
|
var new_bullet = BULLET_3D.instantiate()
|
||||||
|
%Marker3D.add_child(new_bullet)
|
||||||
|
new_bullet.global_transform = %Marker3D.global_transform
|
||||||
|
%AudioStreamPlayer.play()
|
||||||
|
|
||||||
|
func _on_shoot_timer_timeout() -> void:
|
||||||
|
$Camera3D/gun_model.recoil()
|
||||||
|
shoot()
|
||||||
|
|
||||||
|
func heal(amount: float = 35.0) -> void:
|
||||||
|
# TODO: add values and other fancy healing stuff, for now this works
|
||||||
|
health = clampf((health + amount), 0.0, HEALTH_MAX)
|
||||||
|
|
||||||
|
func hurt(amount: float) -> void:
|
||||||
|
health = clampf((health - amount), 0.0, HEALTH_MAX)
|
||||||
|
|
||||||
1
player/player.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://l1gxoouxv4bc
|
||||||
14
player/projectile/projectile.gdshader
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode ambient_light_disabled, shadows_disabled, unshaded;
|
||||||
|
|
||||||
|
uniform vec3 tail_color : source_color;
|
||||||
|
uniform vec3 head_color : source_color;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
float def = sin(UV.y * 2.0 * PI - TIME * 20.0) + 1.0 / 2.0;
|
||||||
|
VERTEX.xz += NORMAL.xz * def * 0.05 * UV.y * COLOR.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
ALBEDO = mix(head_color, tail_color, COLOR.x);
|
||||||
|
}
|
||||||
1
player/projectile/projectile.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://b4wc5wsyakc0a
|
||||||
16
player/projectile/projectile_3d.tscn
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://b2dxu3lnx1jx5"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://o1s0yu8jt5h4" path="res://player/projectile/projectile_model.glb" id="1_ndq6i"]
|
||||||
|
[ext_resource type="Shader" uid="uid://b4wc5wsyakc0a" path="res://player/projectile/projectile.gdshader" id="2_chfaf"]
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_htc8w"]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("2_chfaf")
|
||||||
|
shader_parameter/tail_color = Color(0.863943, 0.713942, 0.177483, 1)
|
||||||
|
shader_parameter/head_color = Color(0.700086, 0.267569, 6.73831e-07, 1)
|
||||||
|
|
||||||
|
[node name="Projectile3D" instance=ExtResource("1_ndq6i")]
|
||||||
|
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="Projectile" parent="." index="0"]
|
||||||
|
material_override = SubResource("ShaderMaterial_htc8w")
|
||||||
BIN
player/projectile/projectile_model.glb
Normal file
37
player/projectile/projectile_model.glb.import
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://o1s0yu8jt5h4"
|
||||||
|
path="res://.godot/imported/projectile_model.glb-828324a605ffc923b73f3dcca1df4ac2.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/projectile/projectile_model.glb"
|
||||||
|
dest_files=["res://.godot/imported/projectile_model.glb-828324a605ffc923b73f3dcca1df4ac2.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
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
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
player/reticle.png
Normal file
|
After Width: | Height: | Size: 887 B |
34
player/reticle.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://daxb87ykphjeh"
|
||||||
|
path="res://.godot/imported/reticle.png-94d8174638f634e8c9dc538a8a25a59b.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/reticle.png"
|
||||||
|
dest_files=["res://.godot/imported/reticle.png-94d8174638f634e8c9dc538a8a25a59b.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
player/simple_gun/gun_model.glb
Normal file
37
player/simple_gun/gun_model.glb.import
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://buif8h7ixc1cy"
|
||||||
|
path="res://.godot/imported/gun_model.glb-1353dadf5f32e414e4a769d740e7949e.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/simple_gun/gun_model.glb"
|
||||||
|
dest_files=["res://.godot/imported/gun_model.glb-1353dadf5f32e414e4a769d740e7949e.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
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
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
player/simple_gun/gun_model_gun_palette.png
Normal file
|
After Width: | Height: | Size: 844 B |
36
player/simple_gun/gun_model_gun_palette.png.import
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d4gvfj2l8l2mj"
|
||||||
|
path.s3tc="res://.godot/imported/gun_model_gun_palette.png-5e9639c5a5afbe289b00847128bc0590.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/gun_model_gun_palette.png-5e9639c5a5afbe289b00847128bc0590.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/simple_gun/gun_model_gun_palette.png"
|
||||||
|
dest_files=["res://.godot/imported/gun_model_gun_palette.png-5e9639c5a5afbe289b00847128bc0590.s3tc.ctex", "res://.godot/imported/gun_model_gun_palette.png-5e9639c5a5afbe289b00847128bc0590.etc2.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
|
||||||
BIN
player/simple_gun/simple_gun_gun_palette.png
Normal file
|
After Width: | Height: | Size: 788 B |
34
player/simple_gun/simple_gun_gun_palette.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dxfe1l1p7klxa"
|
||||||
|
path="res://.godot/imported/simple_gun_gun_palette.png-9f1ece1a39a41c24787881bd26d0b826.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://player/simple_gun/simple_gun_gun_palette.png"
|
||||||
|
dest_files=["res://.godot/imported/simple_gun_gun_palette.png-9f1ece1a39a41c24787881bd26d0b826.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
|
||||||
54
project.godot
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
; Engine configuration file.
|
||||||
|
; It's best edited using the editor UI and not directly,
|
||||||
|
; since the parameters that go here are not all obvious.
|
||||||
|
;
|
||||||
|
; Format:
|
||||||
|
; [section] ; section goes between []
|
||||||
|
; param=value ; assign values to parameters
|
||||||
|
|
||||||
|
config_version=5
|
||||||
|
|
||||||
|
[application]
|
||||||
|
|
||||||
|
config/name="ShootahGame3D"
|
||||||
|
run/main_scene="uid://bc23rfm57cbjk"
|
||||||
|
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||||
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=1280
|
||||||
|
window/size/viewport_height=720
|
||||||
|
window/stretch/mode="viewport"
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
move_left={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"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.2,
|
||||||
|
"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_forward={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"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_back={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"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)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
jump={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"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)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
textures/vram_compression/import_etc2_astc=true
|
||||||
8
start_location.tres
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c23xehahalr4v"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cei1u6horkbiu" path="res://level/checkboard.png" id="1_fkiiv"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color(0.993534, 0.977553, 0.984935, 1)
|
||||||
|
albedo_texture = ExtResource("1_fkiiv")
|
||||||
|
uv1_triplanar = true
|
||||||