Compare commits

..

No commits in common. "main" and "feature" have entirely different histories.

33 changed files with 519 additions and 806 deletions

2
.gitignore vendored
View File

@ -2,8 +2,6 @@
.godot/
.import/
.mono/
*.translation
export_presets.cfg
addons/
android/
build/

View File

@ -13,6 +13,9 @@
[node name="Main" type="Node2D"]
[node name="Level" parent="." instance=ExtResource( 1 )]
__meta__ = {
"_edit_lock_": true
}
[node name="Player" parent="." instance=ExtResource( 14 )]
position = Vector2( 859, 236 )

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spider1.png-85cc52177a93c8766bb76a39a26b9d70.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Spider1.png"
dest_files=[ "res://.import/Spider1.png-85cc52177a93c8766bb76a39a26b9d70.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/elevator.png-acbb9d6b280a7beb809eaa023b52f90b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/elevator.png"
dest_files=[ "res://.import/elevator.png-acbb9d6b280a7beb809eaa023b52f90b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

273
export_presets.cfg Normal file
View File

@ -0,0 +1,273 @@
[preset.0]
name="Android"
platform="Android"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
script_export_mode=1
script_encryption_key=""
[preset.0.options]
custom_template/debug=""
custom_template/release=""
custom_build/use_custom_build=false
custom_build/export_format=0
custom_build/min_sdk=""
custom_build/target_sdk=""
architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
keystore/debug=""
keystore/debug_user=""
keystore/debug_password=""
keystore/release=""
keystore/release_user=""
keystore/release_password=""
one_click_deploy/clear_previous_install=false
version/code=1
version/name="1.0"
package/unique_name="org.godotengine.$genname"
package/name=""
package/signed=true
package/classify_as_game=true
package/retain_data_on_uninstall=false
package/exclude_from_recents=false
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
graphics/opengl_debug=false
xr_features/xr_mode=0
xr_features/hand_tracking=0
xr_features/hand_tracking_frequency=0
xr_features/passthrough=0
screen/immersive_mode=true
screen/support_small=true
screen/support_normal=true
screen/support_large=true
screen/support_xlarge=true
user_data_backup/allow=false
command_line/extra_args=""
apk_expansion/enable=false
apk_expansion/SALT=""
apk_expansion/public_key=""
permissions/custom_permissions=PoolStringArray( )
permissions/access_checkin_properties=false
permissions/access_coarse_location=false
permissions/access_fine_location=false
permissions/access_location_extra_commands=false
permissions/access_mock_location=false
permissions/access_network_state=false
permissions/access_surface_flinger=false
permissions/access_wifi_state=false
permissions/account_manager=false
permissions/add_voicemail=false
permissions/authenticate_accounts=false
permissions/battery_stats=false
permissions/bind_accessibility_service=false
permissions/bind_appwidget=false
permissions/bind_device_admin=false
permissions/bind_input_method=false
permissions/bind_nfc_service=false
permissions/bind_notification_listener_service=false
permissions/bind_print_service=false
permissions/bind_remoteviews=false
permissions/bind_text_service=false
permissions/bind_vpn_service=false
permissions/bind_wallpaper=false
permissions/bluetooth=false
permissions/bluetooth_admin=false
permissions/bluetooth_privileged=false
permissions/brick=false
permissions/broadcast_package_removed=false
permissions/broadcast_sms=false
permissions/broadcast_sticky=false
permissions/broadcast_wap_push=false
permissions/call_phone=false
permissions/call_privileged=false
permissions/camera=false
permissions/capture_audio_output=false
permissions/capture_secure_video_output=false
permissions/capture_video_output=false
permissions/change_component_enabled_state=false
permissions/change_configuration=false
permissions/change_network_state=false
permissions/change_wifi_multicast_state=false
permissions/change_wifi_state=false
permissions/clear_app_cache=false
permissions/clear_app_user_data=false
permissions/control_location_updates=false
permissions/delete_cache_files=false
permissions/delete_packages=false
permissions/device_power=false
permissions/diagnostic=false
permissions/disable_keyguard=false
permissions/dump=false
permissions/expand_status_bar=false
permissions/factory_test=false
permissions/flashlight=false
permissions/force_back=false
permissions/get_accounts=false
permissions/get_package_size=false
permissions/get_tasks=false
permissions/get_top_activity_info=false
permissions/global_search=false
permissions/hardware_test=false
permissions/inject_events=false
permissions/install_location_provider=false
permissions/install_packages=false
permissions/install_shortcut=false
permissions/internal_system_window=false
permissions/internet=false
permissions/kill_background_processes=false
permissions/location_hardware=false
permissions/manage_accounts=false
permissions/manage_app_tokens=false
permissions/manage_documents=false
permissions/manage_external_storage=false
permissions/master_clear=false
permissions/media_content_control=false
permissions/modify_audio_settings=false
permissions/modify_phone_state=false
permissions/mount_format_filesystems=false
permissions/mount_unmount_filesystems=false
permissions/nfc=false
permissions/persistent_activity=false
permissions/process_outgoing_calls=false
permissions/read_calendar=false
permissions/read_call_log=false
permissions/read_contacts=false
permissions/read_external_storage=false
permissions/read_frame_buffer=false
permissions/read_history_bookmarks=false
permissions/read_input_state=false
permissions/read_logs=false
permissions/read_phone_state=false
permissions/read_profile=false
permissions/read_sms=false
permissions/read_social_stream=false
permissions/read_sync_settings=false
permissions/read_sync_stats=false
permissions/read_user_dictionary=false
permissions/reboot=false
permissions/receive_boot_completed=false
permissions/receive_mms=false
permissions/receive_sms=false
permissions/receive_wap_push=false
permissions/record_audio=false
permissions/reorder_tasks=false
permissions/restart_packages=false
permissions/send_respond_via_message=false
permissions/send_sms=false
permissions/set_activity_watcher=false
permissions/set_alarm=false
permissions/set_always_finish=false
permissions/set_animation_scale=false
permissions/set_debug_app=false
permissions/set_orientation=false
permissions/set_pointer_speed=false
permissions/set_preferred_applications=false
permissions/set_process_limit=false
permissions/set_time=false
permissions/set_time_zone=false
permissions/set_wallpaper=false
permissions/set_wallpaper_hints=false
permissions/signal_persistent_processes=false
permissions/status_bar=false
permissions/subscribed_feeds_read=false
permissions/subscribed_feeds_write=false
permissions/system_alert_window=false
permissions/transmit_ir=false
permissions/uninstall_shortcut=false
permissions/update_device_stats=false
permissions/use_credentials=false
permissions/use_sip=false
permissions/vibrate=false
permissions/wake_lock=false
permissions/write_apn_settings=false
permissions/write_calendar=false
permissions/write_call_log=false
permissions/write_contacts=false
permissions/write_external_storage=false
permissions/write_gservices=false
permissions/write_history_bookmarks=false
permissions/write_profile=false
permissions/write_secure_settings=false
permissions/write_settings=false
permissions/write_sms=false
permissions/write_social_stream=false
permissions/write_sync_settings=false
permissions/write_user_dictionary=false
[preset.1]
name="Linux/X11"
platform="Linux/X11"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="build/linux/MegaMoves.x86_64"
script_export_mode=1
script_encryption_key=""
[preset.1.options]
custom_template/debug=""
custom_template/release=""
binary_format/64_bits=true
binary_format/embed_pck=false
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
[preset.2]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="build/windows/MegaMoves.exe"
script_export_mode=1
script_encryption_key=""
[preset.2.options]
custom_template/debug=""
custom_template/release=""
binary_format/64_bits=true
binary_format/embed_pck=false
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
codesign/enable=false
codesign/identity_type=0
codesign/identity=""
codesign/password=""
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PoolStringArray( )
application/modify_resources=true
application/icon=""
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""

View File

@ -221,7 +221,6 @@ dash_1={
2d_physics/layer_6="EnemyHurtbox"
2d_physics/layer_7="PlayerHitbox"
2d_physics/layer_8="EnemyHitbox"
2d_physics/layer_11="Climbable"
[mono]

View File

@ -1,112 +0,0 @@
[gd_scene load_steps=14 format=2]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/components/Hitbox_Component.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/Actors/Enemies/Spider/spider_movement_component.gd" type="Script" id=3]
[ext_resource path="res://src/Actors/Enemies/Spider/states/move.gd" type="Script" id=4]
[ext_resource path="res://src/Actors/Enemies/Spider/states/idle.gd" type="Script" id=5]
[sub_resource type="StreamTexture" id=1]
load_path = "res://.import/Spider1.png-85cc52177a93c8766bb76a39a26b9d70.stex"
[sub_resource type="AtlasTexture" id=2]
atlas = SubResource( 1 )
region = Rect2( 0, 26, 20, 26 )
[sub_resource type="AtlasTexture" id=3]
atlas = SubResource( 1 )
region = Rect2( 0, 0, 20, 26 )
[sub_resource type="AtlasTexture" id=4]
atlas = SubResource( 1 )
region = Rect2( 20, 0, 20, 26 )
[sub_resource type="AtlasTexture" id=5]
atlas = SubResource( 1 )
region = Rect2( 40, 0, 20, 26 )
[sub_resource type="SpriteFrames" id=6]
animations = [ {
"frames": [ SubResource( 2 ) ],
"loop": false,
"name": "die",
"speed": 10.0
}, {
"frames": [ SubResource( 3 ) ],
"loop": false,
"name": "idle",
"speed": 10.0
}, {
"frames": [ SubResource( 3 ), SubResource( 4 ), SubResource( 5 ) ],
"loop": false,
"name": "jump",
"speed": 10.0
}, {
"frames": [ SubResource( 5 ), SubResource( 4 ), SubResource( 3 ) ],
"loop": false,
"name": "land",
"speed": 10.0
} ]
[sub_resource type="RectangleShape2D" id=7]
extents = Vector2( 10, 12 )
[sub_resource type="CircleShape2D" id=8]
[node name="Spider" instance=ExtResource( 1 )]
actor_type = "Enemy"
[node name="AnimatedSprite" parent="." index="0"]
frames = SubResource( 6 )
animation = "jump"
frame = 2
__meta__ = {
"_aseprite_wizard_config_": {
"layer": "",
"o_ex_p": "",
"o_folder": "res://assets",
"o_name": "",
"only_visible": true,
"op_exp": false,
"slice": "",
"source": "D:/Sync/Assets/Library/Spider1.ase"
}
}
[node name="movement_component" parent="." index="1"]
script = ExtResource( 3 )
[node name="movement_state_machine" parent="." index="2"]
debug_state_machine = true
[node name="idle" parent="movement_state_machine" index="0"]
script = ExtResource( 5 )
timeout_seconds = 0.5
animation_sequence = [ "idle" ]
[node name="fall" parent="movement_state_machine" index="1"]
animation_sequence = [ "land" ]
[node name="move" parent="movement_state_machine" index="2"]
script = ExtResource( 4 )
animation_sequence = [ "jump" ]
jump_force = 200.0
[node name="CollisionShape2D" parent="Hurtbox_Component" index="0"]
position = Vector2( 0, -1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="5"]
position = Vector2( 0, -2 )
shape = SubResource( 7 )
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="." index="6"]
position = Vector2( 0, 1 )
[node name="Hitbox_Component" parent="." index="7" instance=ExtResource( 2 )]
damage_amount = 5
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component" index="0"]
position = Vector2( 0, -1 )
shape = SubResource( 8 )
[connection signal="screen_entered" from="VisibilityNotifier2D" to="movement_component" method="_on_VisibilityNotifier2D_screen_entered"]

View File

@ -1,67 +0,0 @@
extends MovementComponent
## Constants available to you
# UP = -1.0
# DOWN = 1.0
# LEFT = -1.0
# RIGHT = 1.0
# Avalable functions to call
# A Series of helper functions
# go_up():
# go_down():
# go_left():
# go_right():
# stop():
var entered_screen = false
var jump_var = false
var last_player_direction: float
func process(delta):
if entered_screen:
if current_movement_state == "idle":
# Only check the player direction in idle because we don't want to track the player during jump
if owner is Actor:
last_player_direction = sign((owner.global_position.direction_to(PlayerInfo.player_position)).x)
jump_var = true
desired_movement_vector.x = last_player_direction
else:
desired_movement_vector.x = last_player_direction
jump_var = false
return
func wants_jump() -> bool:
return jump_var
## Other needed variables
# desired_movement_vector: Vector2 - Used to store desired movement depending on the state
# current_movement_state:String - The name of the current State
# Since animactor state machine can actually view properties from this type
# I'm thinking about moving the velocity tracker in here instead of player.
# velocity: Vector2 - Current velocity, you can change this at will but state may modify it
# Declare any other member variables here. Examples:
# var a = 2
# var b = "text"
# Called every frame. 'delta' is the elapsed time since the previous frame.
# you do not normally need to define this for Actor
#func process(delta):
# pass
# For Enemy and NPC Actors:
# should be called on the frame process.
# For Player Actors:
# Should be called on the input process
func _on_VisibilityNotifier2D_screen_entered():
entered_screen = true
print("Spider wants to play!!!")

View File

@ -1,26 +0,0 @@
extends "res://src/templates/Actor/states/idle.gd"
func enter() -> void:
.enter()
# parent.set_hurtbox(true)
move_component.velocity.x = 0
state_timeout.start()
func process_physics(delta: float) -> State:
# parent.velocity.y += gravity * delta
# #parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
# parent.velocity.x = move_component.desired_movement_vector.x * move_speed
# parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
if state_timeout.time_left == 0:
move_actor_as_desired(delta)
if move_component.velocity.x != 0.0:
return move_state
if !parent.is_on_floor():
return fall_state
return null

View File

@ -1,36 +0,0 @@
extends "res://src/templates/Actor/states/move.gd"
export var jump_force: float = 200.0
var landing_modifier: StateModifier
func _ready():
landing_modifier= StateModifier.new()
#add_child(modifier)
#modifier.init_ref()
landing_modifier.ready( "landing", "land" , landing_modifier.TYPE.EXIT_ANIMATION)
#print("ready! MOD")
func enter() -> void:
.enter()
# Apply initial jump velocity on state enter
move_component.velocity.y = -jump_force
func process_physics(delta: float) -> State:
# if move_component.velocity.y > 0:
# return fall_state
# First allow horizontal movement.
move_actor_as_desired(delta)
#Flip the character before tha actual move maybe.
if move_component.get_movement_direction() != 0.0:
parent.transform.x.x = move_component.get_movement_direction()
if parent.is_on_floor():
idle_state.modifier = landing_modifier
return idle_state
return null

View File

@ -1,79 +0,0 @@
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/Actors/Platform/PlatformVMove/states/move.gd" type="Script" id=2]
[ext_resource path="res://src/Actors/Platform/PlatformVMove/states/idle.gd" type="Script" id=3]
[sub_resource type="StreamTexture" id=1]
load_path = "res://.import/elevator.png-acbb9d6b280a7beb809eaa023b52f90b.stex"
[sub_resource type="AtlasTexture" id=2]
atlas = SubResource( 1 )
region = Rect2( 0, 0, 86, 44 )
[sub_resource type="AtlasTexture" id=3]
atlas = SubResource( 1 )
region = Rect2( 86, 0, 86, 44 )
[sub_resource type="AtlasTexture" id=4]
atlas = SubResource( 1 )
region = Rect2( 172, 0, 86, 44 )
[sub_resource type="AtlasTexture" id=5]
atlas = SubResource( 1 )
region = Rect2( 0, 44, 86, 44 )
[sub_resource type="AtlasTexture" id=6]
atlas = SubResource( 1 )
region = Rect2( 86, 44, 86, 44 )
[sub_resource type="AtlasTexture" id=7]
atlas = SubResource( 1 )
region = Rect2( 172, 44, 86, 44 )
[sub_resource type="SpriteFrames" id=8]
animations = [ {
"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="RectangleShape2D" id=9]
extents = Vector2( 38, 15.5 )
[node name="PlatformVMove" instance=ExtResource( 1 )]
collision_layer = 0
collision_mask = 2
motion/sync_to_physics = true
actor_type = "Object"
[node name="AnimatedSprite" parent="." index="0"]
frames = SubResource( 8 )
frame = 1
__meta__ = {
"_aseprite_wizard_config_": {
"layer": "",
"o_ex_p": "",
"o_folder": "res://assets",
"o_name": "",
"only_visible": true,
"op_exp": false,
"slice": "",
"source": "D:/Sync/Assets/Library/elevator.ase"
}
}
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="1"]
position = Vector2( 0, -3.5 )
shape = SubResource( 9 )
[node name="idle" parent="movement_state_machine" index="0"]
script = ExtResource( 3 )
timeout_seconds = 2.0
move_speed = 0.0
[node name="move" parent="movement_state_machine" index="2"]
script = ExtResource( 2 )
timeout_seconds = 1.0
move_speed = 30.0

View File

@ -1,26 +0,0 @@
extends StateAnimatedActor
export (NodePath) var move_node
onready var move_state: State = get_node(move_node)
func enter() -> void:
.enter()
# parent.set_hurtbox(true)
if debug_state:
print(owner.name, " Move Component: ", move_component.desired_movement_vector.x)
state_timeout.start()
func process_frame(delta):
if state_timeout.time_left == 0:
return move_state
return null
func process_physics(delta: float) -> State:
# parent.velocity.y += gravity * delta
# #parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
# parent.velocity.x = move_component.desired_movement_vector.x * move_speed
# parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
return null

View File

@ -1,55 +0,0 @@
extends StateAnimatedActor
export (NodePath) var idle_node
onready var idle_state: State = get_node(idle_node)
var flip_flop:bool = false
var recoil_velocity = Vector2.ZERO
var max_recoil:float = 8.0
func enter() -> void:
.enter()
# parent.set_hurtbox(true)
if debug_state:
print(owner.name, " Move Component: ", move_component.desired_movement_vector.x)
state_timeout.start()
func process_physics(delta: float) -> State:
if state_timeout.time_left == 0:
if flip_flop:
move_component.velocity.y = move_speed
flip_flop = false
return idle_state
else:
move_component.velocity.y = move_speed * - 1
flip_flop = true
return idle_state
#move_component.velocity = parent.move_and_slide(move_component.velocity, Vector2(0, -1))
#var collision = parent.move_and_collide(move_component.velocity * delta, true, true, true)
# var collision = parent.move_and_collide(Vector2.UP, true, true, true)
#
# if collision and recoil_velocity == Vector2.ZERO:
# print("Get off me!")
# recoil_velocity.y += max_recoil * delta
# if collision and recoil_velocity == Vector2.ZERO:
# print("Get off me!")
# recoil_velocity.y += max_recoil * delta
# else:
# if recoil_velocity.y < max_recoil:
# recoil_velocity.y -= max_recoil * delta
# else:
# recoil_velocity.y += max_recoil * delta
# if recoil_velocity.y < 0:
# recoil_velocity = Vector2.ZERO
#parent.global_translate(move_component.velocity * delta)
parent.position += (move_component.velocity + recoil_velocity) * delta
return null

View File

@ -7,16 +7,8 @@ extends Interactable
onready var sprite: Sprite = $Sprite
const pickup = preload("res://src/Interactables/HealthPickup.tscn")
var opened := false
func trigger_interaction():
# This is something that should maybe be extended for every differant interactible.
# They could inherit from this base class and implement this function.
sprite.frame = 1
if !opened:
var chest_item = pickup.instance()
chest_item.global_position = global_position + Vector2(0,-50)
owner.add_child(chest_item)
opened = true

View File

@ -4,22 +4,6 @@ extends Interactable
onready var health_icon: AnimatedSprite = $AnimatedSprite
onready var drop_raycast: RayCast2D = $RayCast2D
func _ready():
#gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
gravity = 90
# Doesn't get enabled until it drops
monitoring = false
func _physics_process(delta):
if drop_raycast.is_colliding() == false:
var velocity = Vector2(0,0)
position.y += delta * gravity
else:
monitoring = true
func trigger_interaction():
# This is something that should maybe be extended for every differant interactible.
# They could inherit from this base class and implement this function.

View File

@ -8,18 +8,11 @@
radius = 6.0
[node name="HealthPickup" instance=ExtResource( 2 )]
monitoring = false
script = ExtResource( 1 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="." index="0"]
frames = ExtResource( 3 )
frame = 2
playing = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="1"]
shape = SubResource( 1 )
[node name="RayCast2D" type="RayCast2D" parent="." index="2"]
enabled = true
cast_to = Vector2( 0, 8 )
collision_mask = 3

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=20 format=2]
[ext_resource path="res://src/Level.gd" type="Script" id=1]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://assets/Tiles/Assets/Demo TileSet.tres" type="TileSet" id=2]
[ext_resource path="res://assets/High Forest/Background/Background.png" type="Texture" id=3]
[ext_resource path="res://assets/High Forest/Assets/Tiles.png" type="Texture" id=4]
@ -219,7 +219,6 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
4/z_index = 0
[node name="Level3" type="Node2D"]
script = ExtResource( 1 )
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
scroll_base_scale = Vector2( 0.4, 1 )
@ -284,8 +283,12 @@ __meta__ = {
"_edit_lock_": true
}
[node name="ActorTemplate" parent="." instance=ExtResource( 1 )]
position = Vector2( 221, 135 )
__meta__ = {
"_edit_lock_": true
}
actor_type = "NPC"
[node name="EnemyC3" parent="." instance=ExtResource( 7 )]
position = Vector2( 796, 89 )
[node name="PlayerStart" type="Position2D" parent="."]
position = Vector2( 89, 103 )

View File

@ -4,7 +4,7 @@ extends KinematicBody2D
#var velocity = Vector2(0,0)
#var direction = Vector2(-1,0)
export(String, "Player", "Enemy", "NPC", "Object") var actor_type
export(String, "Player", "Enemy", "NPC") var actor_type
#export var sprite_facing_right: bool = true
export(Array, Resource) var SoundEffects
export var debug_actor: bool = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=34 format=2]
[gd_scene load_steps=33 format=2]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/enemyC/enemyC_movement_component.gd" type="Script" id=2]
@ -122,9 +122,6 @@ extents = Vector2( 9, 3.5 )
[sub_resource type="CapsuleShape2D" id=24]
height = 10.0
[sub_resource type="RectangleShape2D" id=25]
extents = Vector2( 10.5, 17.5 )
[node name="EnemyC" instance=ExtResource( 1 )]
script = ExtResource( 6 )
actor_type = "Enemy"
@ -133,7 +130,7 @@ actor_type = "Enemy"
position = Vector2( 11, -7 )
frames = SubResource( 20 )
animation = "idle"
frame = 2
frame = 1
__meta__ = {
"_aseprite_wizard_config_": {
"layer": "",
@ -147,7 +144,10 @@ __meta__ = {
}
}
[node name="movement_component" parent="." index="1"]
[node name="CollisionShape2D" parent="." index="1"]
position = Vector2( -0.5, -2 )
[node name="movement_component" parent="." index="2"]
script = ExtResource( 2 )
[node name="IdleTimeout" type="Timer" parent="movement_component" index="0"]
@ -189,14 +189,14 @@ timeout_seconds = 0.5
move_speed = -5.0
animation_sequence = [ "death" ]
[node name="Hurtbox_Component" parent="." index="3"]
[node name="Hurtbox_Component" parent="." index="4"]
hurtbox_entered_function = "enemyHit"
[node name="CollisionShape2D" parent="Hurtbox_Component" index="0"]
position = Vector2( -1, -2 )
shape = SubResource( 22 )
[node name="EdgeDetection" type="RayCast2D" parent="." index="5"]
[node name="EdgeDetection" type="RayCast2D" parent="." index="6"]
modulate = Color( 0.054902, 1, 0, 1 )
show_behind_parent = true
position = Vector2( 15, 3 )
@ -204,12 +204,12 @@ enabled = true
cast_to = Vector2( 0, 17 )
collide_with_areas = true
[node name="PlayerDetection" type="RayCast2D" parent="." index="6"]
[node name="PlayerDetection" type="RayCast2D" parent="." index="7"]
enabled = true
cast_to = Vector2( 21, 0 )
collision_mask = 2
[node name="Hitbox_Component" parent="." index="7" instance=ExtResource( 4 )]
[node name="Hitbox_Component" parent="." index="8" instance=ExtResource( 4 )]
damage_amount = 10
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component" index="0"]
@ -218,20 +218,16 @@ position = Vector2( 18, -8.5 )
shape = SubResource( 23 )
disabled = true
[node name="GenericSender" parent="." index="8" instance=ExtResource( 5 )]
[node name="GenericSender" parent="." index="9" instance=ExtResource( 5 )]
receiver_node_name = "GenericReceiver"
[node name="CollisionShape2D" type="CollisionShape2D" parent="GenericSender" index="0"]
position = Vector2( 48, 0 )
shape = SubResource( 24 )
[node name="Health_Component" parent="." index="9" instance=ExtResource( 7 )]
[node name="Health_Component" parent="." index="10" instance=ExtResource( 7 )]
max_health = 20
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="10"]
position = Vector2( -0.5, -1.5 )
shape = SubResource( 25 )
[connection signal="frame_reached" from="movement_state_machine/attack" to="." method="_on_attack_frame_reached"]
[connection signal="state_exited" from="movement_state_machine/attack" to="." method="_on_attack_state_exited"]
[connection signal="health_depleted" from="Health_Component" to="." method="_on_Health_Component_health_depleted"]

View File

@ -74,9 +74,3 @@ func wants_dash() -> bool:
func wants_roll() -> bool:
return false
func wants_climb() -> bool:
return false
func get_climb_shape_location() -> Vector2:
return Vector2(-1,-1)

View File

@ -16,41 +16,37 @@
[ext_resource path="res://src/playerD/states/roll.gd" type="Script" id=14]
[ext_resource path="res://src/playerD/states/die.gd" type="Script" id=15]
[ext_resource path="res://src/templates/Interactable/Interactable_Receiver.gd" type="Script" id=16]
[ext_resource path="res://src/playerD/states/climb.gd" type="Script" id=17]
[sub_resource type="RectangleShape2D" id=197]
extents = Vector2( 13, 18.5 )
[sub_resource type="StreamTexture" id=90]
load_path = "res://.import/Mega.png-93dfe0790902b932f7b46f7b23c5d4e7.stex"
[sub_resource type="AtlasTexture" id=91]
atlas = SubResource( 90 )
region = Rect2( 1680, 960, 240, 160 )
region = Rect2( 1440, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=92]
atlas = SubResource( 90 )
region = Rect2( 1920, 960, 240, 160 )
region = Rect2( 1680, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=93]
atlas = SubResource( 90 )
region = Rect2( 2160, 960, 240, 160 )
region = Rect2( 1920, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=94]
atlas = SubResource( 90 )
region = Rect2( 2400, 960, 240, 160 )
region = Rect2( 2160, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=95]
atlas = SubResource( 90 )
region = Rect2( 0, 1120, 240, 160 )
region = Rect2( 2400, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=96]
atlas = SubResource( 90 )
region = Rect2( 240, 1120, 240, 160 )
region = Rect2( 0, 1120, 240, 160 )
[sub_resource type="AtlasTexture" id=97]
atlas = SubResource( 90 )
region = Rect2( 1440, 960, 240, 160 )
region = Rect2( 240, 1120, 240, 160 )
[sub_resource type="AtlasTexture" id=98]
atlas = SubResource( 90 )
@ -58,31 +54,31 @@ region = Rect2( 480, 1120, 240, 160 )
[sub_resource type="AtlasTexture" id=99]
atlas = SubResource( 90 )
region = Rect2( 480, 160, 240, 160 )
region = Rect2( 720, 1120, 240, 160 )
[sub_resource type="AtlasTexture" id=100]
atlas = SubResource( 90 )
region = Rect2( 720, 160, 240, 160 )
region = Rect2( 960, 1120, 240, 160 )
[sub_resource type="AtlasTexture" id=101]
atlas = SubResource( 90 )
region = Rect2( 960, 160, 240, 160 )
region = Rect2( 480, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=102]
atlas = SubResource( 90 )
region = Rect2( 1200, 160, 240, 160 )
region = Rect2( 720, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=103]
atlas = SubResource( 90 )
region = Rect2( 1440, 160, 240, 160 )
region = Rect2( 960, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=104]
atlas = SubResource( 90 )
region = Rect2( 240, 1440, 240, 160 )
region = Rect2( 1200, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=105]
atlas = SubResource( 90 )
region = Rect2( 480, 1440, 240, 160 )
region = Rect2( 1440, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=106]
atlas = SubResource( 90 )
@ -122,43 +118,43 @@ region = Rect2( 0, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=115]
atlas = SubResource( 90 )
region = Rect2( 960, 960, 240, 160 )
region = Rect2( 240, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=116]
atlas = SubResource( 90 )
region = Rect2( 1200, 960, 240, 160 )
region = Rect2( 480, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=117]
atlas = SubResource( 90 )
region = Rect2( 1200, 0, 240, 160 )
region = Rect2( 960, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=118]
atlas = SubResource( 90 )
region = Rect2( 0, 0, 240, 160 )
region = Rect2( 1200, 960, 240, 160 )
[sub_resource type="AtlasTexture" id=119]
atlas = SubResource( 90 )
region = Rect2( 1440, 0, 240, 160 )
region = Rect2( 1200, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=120]
atlas = SubResource( 90 )
region = Rect2( 1680, 0, 240, 160 )
region = Rect2( 0, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=121]
atlas = SubResource( 90 )
region = Rect2( 1920, 0, 240, 160 )
region = Rect2( 1440, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=122]
atlas = SubResource( 90 )
region = Rect2( 2160, 0, 240, 160 )
region = Rect2( 1680, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=123]
atlas = SubResource( 90 )
region = Rect2( 240, 1600, 240, 160 )
region = Rect2( 1920, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=124]
atlas = SubResource( 90 )
region = Rect2( 480, 1600, 240, 160 )
region = Rect2( 2160, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=125]
atlas = SubResource( 90 )
@ -166,187 +162,187 @@ region = Rect2( 720, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=126]
atlas = SubResource( 90 )
region = Rect2( 240, 160, 240, 160 )
region = Rect2( 960, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=127]
atlas = SubResource( 90 )
region = Rect2( 1680, 160, 240, 160 )
region = Rect2( 1200, 1600, 240, 160 )
[sub_resource type="AtlasTexture" id=128]
atlas = SubResource( 90 )
region = Rect2( 1920, 160, 240, 160 )
region = Rect2( 240, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=129]
atlas = SubResource( 90 )
region = Rect2( 2160, 160, 240, 160 )
region = Rect2( 1680, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=130]
atlas = SubResource( 90 )
region = Rect2( 2400, 160, 240, 160 )
region = Rect2( 1920, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=131]
atlas = SubResource( 90 )
region = Rect2( 0, 320, 240, 160 )
region = Rect2( 2160, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=132]
atlas = SubResource( 90 )
region = Rect2( 240, 320, 240, 160 )
region = Rect2( 2400, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=133]
atlas = SubResource( 90 )
region = Rect2( 480, 320, 240, 160 )
region = Rect2( 0, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=134]
atlas = SubResource( 90 )
region = Rect2( 720, 320, 240, 160 )
region = Rect2( 240, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=135]
atlas = SubResource( 90 )
region = Rect2( 960, 320, 240, 160 )
region = Rect2( 480, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=136]
atlas = SubResource( 90 )
region = Rect2( 1200, 320, 240, 160 )
region = Rect2( 720, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=137]
atlas = SubResource( 90 )
region = Rect2( 1680, 640, 240, 160 )
region = Rect2( 960, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=138]
atlas = SubResource( 90 )
region = Rect2( 1920, 640, 240, 160 )
region = Rect2( 1200, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=139]
atlas = SubResource( 90 )
region = Rect2( 2160, 640, 240, 160 )
region = Rect2( 1680, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=140]
atlas = SubResource( 90 )
region = Rect2( 2400, 640, 240, 160 )
region = Rect2( 1920, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=141]
atlas = SubResource( 90 )
region = Rect2( 0, 800, 240, 160 )
region = Rect2( 2160, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=142]
atlas = SubResource( 90 )
region = Rect2( 240, 800, 240, 160 )
region = Rect2( 2400, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=143]
atlas = SubResource( 90 )
region = Rect2( 480, 800, 240, 160 )
region = Rect2( 0, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=144]
atlas = SubResource( 90 )
region = Rect2( 720, 800, 240, 160 )
region = Rect2( 240, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=145]
atlas = SubResource( 90 )
region = Rect2( 960, 800, 240, 160 )
region = Rect2( 480, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=146]
atlas = SubResource( 90 )
region = Rect2( 1200, 800, 240, 160 )
region = Rect2( 720, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=147]
atlas = SubResource( 90 )
region = Rect2( 1440, 800, 240, 160 )
region = Rect2( 960, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=148]
atlas = SubResource( 90 )
region = Rect2( 1920, 320, 240, 160 )
region = Rect2( 1200, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=149]
atlas = SubResource( 90 )
region = Rect2( 2160, 320, 240, 160 )
region = Rect2( 1440, 800, 240, 160 )
[sub_resource type="AtlasTexture" id=150]
atlas = SubResource( 90 )
region = Rect2( 2400, 320, 240, 160 )
region = Rect2( 1920, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=151]
atlas = SubResource( 90 )
region = Rect2( 0, 480, 240, 160 )
region = Rect2( 2160, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=152]
atlas = SubResource( 90 )
region = Rect2( 240, 480, 240, 160 )
region = Rect2( 2400, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=153]
atlas = SubResource( 90 )
region = Rect2( 480, 480, 240, 160 )
region = Rect2( 0, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=154]
atlas = SubResource( 90 )
region = Rect2( 720, 480, 240, 160 )
region = Rect2( 240, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=155]
atlas = SubResource( 90 )
region = Rect2( 960, 480, 240, 160 )
region = Rect2( 480, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=156]
atlas = SubResource( 90 )
region = Rect2( 1200, 480, 240, 160 )
region = Rect2( 720, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=157]
atlas = SubResource( 90 )
region = Rect2( 1440, 480, 240, 160 )
region = Rect2( 960, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=158]
atlas = SubResource( 90 )
region = Rect2( 1920, 480, 240, 160 )
region = Rect2( 1200, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=159]
atlas = SubResource( 90 )
region = Rect2( 2160, 480, 240, 160 )
region = Rect2( 1440, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=160]
atlas = SubResource( 90 )
region = Rect2( 2400, 480, 240, 160 )
region = Rect2( 1920, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=161]
atlas = SubResource( 90 )
region = Rect2( 0, 640, 240, 160 )
region = Rect2( 2160, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=162]
atlas = SubResource( 90 )
region = Rect2( 240, 640, 240, 160 )
region = Rect2( 2400, 480, 240, 160 )
[sub_resource type="AtlasTexture" id=163]
atlas = SubResource( 90 )
region = Rect2( 480, 640, 240, 160 )
region = Rect2( 0, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=164]
atlas = SubResource( 90 )
region = Rect2( 720, 640, 240, 160 )
region = Rect2( 240, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=165]
atlas = SubResource( 90 )
region = Rect2( 960, 640, 240, 160 )
region = Rect2( 480, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=166]
atlas = SubResource( 90 )
region = Rect2( 1200, 640, 240, 160 )
region = Rect2( 720, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=167]
atlas = SubResource( 90 )
region = Rect2( 1440, 640, 240, 160 )
region = Rect2( 960, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=168]
atlas = SubResource( 90 )
region = Rect2( 2400, 0, 240, 160 )
region = Rect2( 1200, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=169]
atlas = SubResource( 90 )
region = Rect2( 0, 160, 240, 160 )
region = Rect2( 1440, 640, 240, 160 )
[sub_resource type="AtlasTexture" id=170]
atlas = SubResource( 90 )
region = Rect2( 720, 1120, 240, 160 )
region = Rect2( 2400, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=171]
atlas = SubResource( 90 )
region = Rect2( 960, 1120, 240, 160 )
region = Rect2( 0, 160, 240, 160 )
[sub_resource type="AtlasTexture" id=172]
atlas = SubResource( 90 )
@ -422,121 +418,119 @@ region = Rect2( 0, 1440, 240, 160 )
[sub_resource type="AtlasTexture" id=190]
atlas = SubResource( 90 )
region = Rect2( 240, 0, 240, 160 )
region = Rect2( 240, 1440, 240, 160 )
[sub_resource type="AtlasTexture" id=191]
atlas = SubResource( 90 )
region = Rect2( 480, 0, 240, 160 )
region = Rect2( 480, 1440, 240, 160 )
[sub_resource type="AtlasTexture" id=192]
atlas = SubResource( 90 )
region = Rect2( 720, 0, 240, 160 )
region = Rect2( 240, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=193]
atlas = SubResource( 90 )
region = Rect2( 960, 0, 240, 160 )
region = Rect2( 480, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=194]
atlas = SubResource( 90 )
region = Rect2( 1680, 320, 240, 160 )
region = Rect2( 720, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=195]
atlas = SubResource( 90 )
region = Rect2( 960, 0, 240, 160 )
[sub_resource type="AtlasTexture" id=196]
atlas = SubResource( 90 )
region = Rect2( 1680, 320, 240, 160 )
[sub_resource type="AtlasTexture" id=197]
atlas = SubResource( 90 )
region = Rect2( 1680, 480, 240, 160 )
[sub_resource type="SpriteFrames" id=196]
[sub_resource type="SpriteFrames" id=198]
animations = [ {
"frames": [ SubResource( 91 ), SubResource( 92 ), SubResource( 93 ), SubResource( 94 ), SubResource( 95 ), SubResource( 96 ) ],
"frames": [ SubResource( 91 ), SubResource( 92 ), SubResource( 93 ), SubResource( 94 ), SubResource( 95 ), SubResource( 96 ), SubResource( 97 ), SubResource( 98 ), SubResource( 99 ), SubResource( 100 ) ],
"loop": true,
"name": "climb",
"speed": 10.0
}, {
"frames": [ SubResource( 97 ) ],
"loop": false,
"name": "climb_step",
"speed": 10.0
}, {
"frames": [ SubResource( 98 ) ],
"loop": false,
"name": "climb_upstep",
"speed": 10.0
}, {
"frames": [ SubResource( 99 ), SubResource( 99 ), SubResource( 99 ), SubResource( 100 ), SubResource( 101 ), SubResource( 102 ), SubResource( 103 ), SubResource( 103 ), SubResource( 103 ) ],
"frames": [ SubResource( 101 ), SubResource( 102 ), SubResource( 103 ), SubResource( 103 ), SubResource( 104 ), SubResource( 105 ) ],
"loop": false,
"name": "dash",
"speed": 10.0
}, {
"frames": [ SubResource( 104 ), SubResource( 105 ), SubResource( 106 ), SubResource( 107 ), SubResource( 108 ), SubResource( 109 ), SubResource( 110 ), SubResource( 111 ), SubResource( 112 ), SubResource( 113 ), SubResource( 112 ), SubResource( 114 ) ],
"frames": [ SubResource( 106 ), SubResource( 107 ), SubResource( 108 ), SubResource( 109 ), SubResource( 110 ), SubResource( 111 ), SubResource( 112 ), SubResource( 113 ), SubResource( 114 ), SubResource( 115 ), SubResource( 114 ), SubResource( 116 ) ],
"loop": false,
"name": "die",
"speed": 10.0
}, {
"frames": [ SubResource( 115 ), SubResource( 116 ) ],
"frames": [ SubResource( 117 ), SubResource( 118 ) ],
"loop": true,
"name": "hurt",
"speed": 4.0
}, {
"frames": [ SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 117 ), SubResource( 118 ), SubResource( 119 ), SubResource( 120 ), SubResource( 121 ), SubResource( 122 ) ],
"frames": [ SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 119 ), SubResource( 120 ), SubResource( 121 ), SubResource( 122 ), SubResource( 123 ), SubResource( 124 ) ],
"loop": true,
"name": "idle",
"speed": 10.0
}, {
"frames": [ SubResource( 123 ), SubResource( 124 ), SubResource( 125 ) ],
"frames": [ SubResource( 125 ), SubResource( 126 ), SubResource( 127 ) ],
"loop": true,
"name": "idle_shield",
"speed": 10.0
}, {
"frames": [ SubResource( 126 ) ],
"loop": true,
"frames": [ SubResource( 128 ) ],
"loop": false,
"name": "idle_shoot",
"speed": 10.0
}, {
"frames": [ SubResource( 127 ), SubResource( 128 ), SubResource( 129 ), SubResource( 130 ), SubResource( 128 ), SubResource( 131 ), SubResource( 132 ), SubResource( 133 ) ],
"frames": [ SubResource( 129 ), SubResource( 130 ), SubResource( 131 ), SubResource( 132 ), SubResource( 130 ), SubResource( 133 ), SubResource( 134 ), SubResource( 135 ) ],
"loop": false,
"name": "jump",
"speed": 10.0
}, {
"frames": [ SubResource( 134 ), SubResource( 134 ), SubResource( 134 ), SubResource( 134 ), SubResource( 134 ), SubResource( 134 ), SubResource( 135 ), SubResource( 136 ) ],
"frames": [ SubResource( 136 ), SubResource( 136 ), SubResource( 136 ), SubResource( 136 ), SubResource( 136 ), SubResource( 136 ), SubResource( 137 ), SubResource( 138 ) ],
"loop": false,
"name": "jump_shoot",
"speed": 10.0
}, {
"frames": [ SubResource( 137 ), SubResource( 138 ), SubResource( 139 ), SubResource( 140 ), SubResource( 141 ), SubResource( 142 ), SubResource( 143 ), SubResource( 144 ), SubResource( 145 ), SubResource( 146 ), SubResource( 147 ) ],
"frames": [ SubResource( 139 ), SubResource( 140 ), SubResource( 141 ), SubResource( 142 ), SubResource( 143 ), SubResource( 144 ), SubResource( 145 ), SubResource( 146 ), SubResource( 147 ), SubResource( 148 ), SubResource( 149 ) ],
"loop": false,
"name": "roll",
"speed": 10.0
}, {
"frames": [ SubResource( 148 ), SubResource( 149 ), SubResource( 150 ), SubResource( 151 ), SubResource( 152 ), SubResource( 153 ), SubResource( 154 ), SubResource( 155 ), SubResource( 156 ), SubResource( 157 ) ],
"frames": [ SubResource( 150 ), SubResource( 151 ), SubResource( 152 ), SubResource( 153 ), SubResource( 154 ), SubResource( 155 ), SubResource( 156 ), SubResource( 157 ), SubResource( 158 ), SubResource( 159 ) ],
"loop": true,
"name": "run",
"speed": 10.0
}, {
"frames": [ SubResource( 158 ), SubResource( 159 ), SubResource( 160 ), SubResource( 161 ), SubResource( 162 ), SubResource( 163 ), SubResource( 164 ), SubResource( 165 ), SubResource( 166 ), SubResource( 167 ) ],
"frames": [ SubResource( 160 ), SubResource( 161 ), SubResource( 162 ), SubResource( 163 ), SubResource( 164 ), SubResource( 165 ), SubResource( 166 ), SubResource( 167 ), SubResource( 168 ), SubResource( 169 ) ],
"loop": true,
"name": "run_shoot",
"speed": 10.0
}, {
"frames": [ SubResource( 168 ), SubResource( 169 ), SubResource( 126 ) ],
"frames": [ SubResource( 170 ), SubResource( 171 ), SubResource( 128 ) ],
"loop": false,
"name": "shoot",
"speed": 10.0
}, {
"frames": [ SubResource( 170 ), SubResource( 171 ), SubResource( 172 ), SubResource( 172 ), SubResource( 173 ), SubResource( 174 ), SubResource( 175 ), SubResource( 176 ), SubResource( 176 ), SubResource( 177 ), SubResource( 178 ), SubResource( 179 ), SubResource( 180 ), SubResource( 181 ), SubResource( 182 ), SubResource( 183 ), SubResource( 184 ), SubResource( 185 ), SubResource( 186 ), SubResource( 187 ), SubResource( 188 ), SubResource( 189 ) ],
"frames": [ SubResource( 172 ), SubResource( 173 ), SubResource( 174 ), SubResource( 174 ), SubResource( 175 ), SubResource( 176 ), SubResource( 177 ), SubResource( 178 ), SubResource( 178 ), SubResource( 179 ), SubResource( 180 ), SubResource( 181 ), SubResource( 182 ), SubResource( 183 ), SubResource( 184 ), SubResource( 185 ), SubResource( 186 ), SubResource( 187 ), SubResource( 188 ), SubResource( 189 ), SubResource( 190 ), SubResource( 191 ) ],
"loop": true,
"name": "slash",
"speed": 10.0
}, {
"frames": [ SubResource( 118 ), SubResource( 190 ), SubResource( 191 ), SubResource( 192 ), SubResource( 193 ) ],
"frames": [ SubResource( 120 ), SubResource( 192 ), SubResource( 193 ), SubResource( 194 ), SubResource( 195 ) ],
"loop": false,
"name": "stand",
"speed": 10.0
}, {
"frames": [ SubResource( 194 ) ],
"frames": [ SubResource( 196 ) ],
"loop": false,
"name": "step",
"speed": 10.0
}, {
"frames": [ SubResource( 195 ) ],
"frames": [ SubResource( 197 ) ],
"loop": false,
"name": "step_shoot",
"speed": 10.0
@ -550,13 +544,9 @@ script = ExtResource( 3 )
actor_type = "Player"
player_number = 1
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="0"]
position = Vector2( 0, -3.5 )
shape = SubResource( 197 )
[node name="AnimatedSprite" parent="." index="1"]
[node name="AnimatedSprite" parent="." index="0"]
position = Vector2( -1, -51 )
frames = SubResource( 196 )
frames = SubResource( 198 )
animation = "idle_shoot"
frame = 0
flip_h = false
@ -580,14 +570,12 @@ interactable_node = NodePath("../Interactable_Receiver")
[node name="idle" parent="movement_state_machine" index="0"]
script = ExtResource( 4 )
debug_state = true
move_speed = 0.0
animation_sequence = [ "idle" ]
jump_node = NodePath("../jump")
attack_node = NodePath("../attack")
dash_node = NodePath("../dash")
roll_node = NodePath("../roll")
climb_node = NodePath("../climb")
[node name="fall" parent="movement_state_machine" index="1"]
script = ExtResource( 6 )
@ -633,8 +621,7 @@ idle_node = NodePath("../idle")
script = ExtResource( 11 )
move_speed = 90.0
move_speed_modifier = 90.0
move_modifier_move_acceleration = -100.0
jerk_factor = -20.0
move_modifier_move_acceleration = -180.0
animation_sequence = [ "dash" ]
fall_node = NodePath("../fall")
idle_node = NodePath("../idle")
@ -655,12 +642,6 @@ idle_node = NodePath("../idle")
script = ExtResource( 15 )
animation_sequence = [ "die" ]
[node name="climb" type="Node" parent="movement_state_machine" index="9"]
script = ExtResource( 17 )
debug_state = true
animation_sequence = [ "climb_step", "climb", "climb_upstep" ]
idle_node = NodePath("../idle")
[node name="Hurtbox_Component" parent="." index="4"]
collision_layer = 16
collision_mask = 128
@ -696,15 +677,6 @@ interactable_parent_callback = "touch_the_thing"
modifier_parent_callback = "receive_modifier"
debug_receiver = true
[node name="Ladder_Detection" type="RayCast2D" parent="." index="10"]
modulate = Color( 0.247059, 0.92549, 0.0313726, 1 )
position = Vector2( 0, 5 )
enabled = true
cast_to = Vector2( 0, 15 )
collision_mask = 1024
collide_with_areas = true
collide_with_bodies = false
[connection signal="do_attack" from="movement_state_machine/attack" to="." method="_on_attack_do_attack"]
[connection signal="frame_reached" from="movement_state_machine/roll" to="." method="_on_roll_frame_reached"]
[connection signal="state_exited" from="movement_state_machine/roll" to="." method="_on_roll_state_exited"]

View File

@ -20,15 +20,7 @@ export var player_number: int = 1
export (NodePath) var interactable_node
onready var interactable_receiver_node: Interactable_Receiver = get_node(interactable_node)
onready var ladder_detection:RayCast2D = $"../Ladder_Detection"
var ladder_collision: RayCast2D
func _ready():
ladder_collision = ladder_detection
# Guess there isn't a hit from inside in 3.5
# Remember to make raycast as tall as needed for the player
#ladder_collision.hit_from_inside = true
func process_physics(delta):
PlayerInfo.player_position = owner.global_position
@ -78,40 +70,6 @@ func wants_roll() -> bool:
else:
return false
func wants_climb() -> bool:
if ladder_detection.is_colliding() and Input.is_action_pressed("ui_up"):
#print("betcha wanna climb though!")
return true
else:
return false
func get_climb_shape_location() -> Vector2:
if ladder_detection.is_colliding():
var point: Vector2 = ladder_collision.get_collision_point()
var shape_id = ladder_collision.get_collider_shape()
var object = ladder_collision.get_collider()
# This works but doesn't get the shapes location.
# if object is Area2D:
# print("You got an area bro!" , object.global_position)
# This appears to get the shapes location!
var area = Physics2DServer.area_get_transform(object)
var areashape = Physics2DServer.area_get_shape_transform(object, shape_id)
var y_dir = Input.get_axis("ui_up" , "ui_down")
#var target = get_collider() # A CollisionObject2D.
#var shape_id = get_collider_shape() # The shape index in the collider.
#var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.
#var shape = target.shape_owner_get_owner(owner_id)
#UiManager.debug_text = str(round(point.x)) + ' ' + str(round(point.y)) #( "Mod(" + str(sign(_move_speed_modifier)) + ") Dir(" + str(move_direction) + ") Vel(" + str(sign(current_x_velocity)) + ") Mov(" + str(sign(move_component.desired_movement_vector.x)) +
return Vector2(areashape.origin.x, y_dir)
else:
return Vector2(-1,-1)
## Other needed variables
# desired_movement_vector: Vector2 - Used to store desired movement depending on the state

View File

@ -1,51 +0,0 @@
extends StateAnimatedActor
export (NodePath) var idle_node
onready var idle_state: StateAnimatedActor = get_node(idle_node)
#onready var landing_mod: StateModifier = get_node(landing_node)
var climbing_modifier: StateModifier
func _ready():
climbing_modifier= StateModifier.new()
#add_child(modifier)
#modifier.init_ref()
# climbing_modifier.ready( "landing", "jump" , climbing_modifier.TYPE.EXIT_ANIMATION)
# climbing_modifier.starting_frame = 6
#print("ready! MOD")
func enter() -> void:
.enter()
animations.frame = 5
func process_physics(delta: float) -> State:
# First allow horizontal movement.
#move_actor_as_desired(delta)
# Make wure we still want to climb
var ladder_location = move_component.get_climb_shape_location()
if ladder_location != Vector2(-1,-1):
UiManager.debug_text = str(ladder_location) + '\n' + str(ladder_location - parent.global_position) #+ '\n' + str(parent.global_position.distance_to(ladder_location))
# An attempt to snap to the ladder location
if parent.global_position.x != round(ladder_location.x):
parent.global_translate(Vector2(round((ladder_location.x - parent.global_position.x)),(ladder_location.y * move_speed) * delta))
if ladder_location.y != 0:
animations.play()
else:
# Make sure we hopped the step index
if animation_index > 0:
animations.stop()
else:
return idle_state
#parent.move_local_x()
#Flip the character before tha actual move maybe.
if move_component.get_movement_direction() != 0.0:
parent.transform.x.x = move_component.get_movement_direction()
# if parent.is_on_floor():
# #modifier.reference()
# idle_state.modifier = climbing_modifier
# return idle_state
return null

View File

@ -37,6 +37,7 @@ func process_physics(delta: float) -> State:
parent.transform.x.x = move_component.get_movement_direction()
if parent.is_on_floor():
print("DO you even!?: ", landing_modifier.animation_name)
#modifier.reference()
idle_state.modifier = landing_modifier
return idle_state

View File

@ -47,7 +47,7 @@ func process_frame(delta: float) -> State:
func process_physics(delta: float) -> State:
move_component.velocity.y += gravity * delta
#parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
move_component.velocity.x = parent.transform.x.x * move_speed
move_component.velocity = parent.transform.x * move_speed
# if (parent.direction.x > 0):
# parent.velocity.x = 1 * move_speed
# else:

View File

@ -6,7 +6,6 @@ export (NodePath) var jump_node
export (NodePath) var attack_node
export (NodePath) var dash_node
export (NodePath) var roll_node
export (NodePath) var climb_node
onready var fall_state: State = get_node(fall_node)
onready var move_state: State = get_node(move_node)
@ -14,7 +13,6 @@ onready var jump_state: State = get_node(jump_node)
onready var attack_state: State = get_node(attack_node)
onready var dash_state: State = get_node(dash_node)
onready var roll_state: State = get_node(roll_node)
onready var climb_state: State = get_node(climb_node)
func enter() -> void:
.enter()
@ -36,8 +34,6 @@ func process_physics(delta: float) -> State:
if move_component.wants_dash() and parent.is_on_floor():
return dash_state
if move_component.wants_climb():
return climb_state
if move_component.wants_shoot():
return attack_state

View File

@ -353,6 +353,12 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
print("Acceleration changed.", abs(move_component.acceleration.x), "-", (_move_modifier_move_acceleration + _move_acceleration))
move_component.acceleration.x = _move_modifier_move_acceleration + _move_acceleration
# ##TODO: I don't know where I should actually set the momentum. :
# if sign(_move_speed_modifier) == -1: # decreased speed modifier
# move_component.momentum.x = 0
# elif sign(_move_speed_modifier) == +1: # increased speed modifier
# move_component.momentum.x = abs(move_speed_modifier)
# If we're no longer tryingg to move int the direction of our movement and momentum.
if sign(current_x_velocity) != sign(move_component.desired_movement_vector.x) and move_component.momentum.x != 0:
if sign(_move_speed_modifier) == -1 : # decreased speed modifier
@ -369,15 +375,13 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
sign(current_x_velocity) == 1) or (sign(move_component.desired_movement_vector.x) == -1 and
sign(current_x_velocity) == -1):
print("be more opposite")
# if sign(_move_speed_modifier) == 1: # increased speed modifier
# print("faster faster.")
if sign(_move_speed_modifier) == 1:
print("faster faster.")
elif sign(move_component.desired_movement_vector.x) == sign(current_x_velocity) and move_component.momentum.x != 0:
if sign(move_component.acceleration.x) != sign(move_component.momentum.x) and x_move_direction_override == 0:
print("Step it up!")
# Flip the direction of the acceleration
move_component.acceleration.x *= -1
# Apply momentum and acceleration if a modifer exists
if move_component.momentum.x <= 0 and _move_speed_modifier !=0:
#if we're trying to move but we have no momentum applied currently
#if move_component.desired_movement_vector.x != 0:
@ -387,22 +391,43 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
if sign(_move_speed_modifier) == -1: # decreased speed modifier
move_component.momentum.x = 0
elif sign(_move_speed_modifier) == +1: # increased speed modifier
##TODO: in most cases this should only be applied once. need to find a way to warn against this.
move_component.momentum.x = abs(move_speed_modifier)
print("momentum applied!")
# Reverse the accelerations if we carry over momentum but the modifier no longer applies.
if move_component.momentum.x > 0 and _move_speed_modifier == 0:
if sign(move_component.acceleration.x) == sign(move_component.momentum.x):
print("Whoh Woah your done.")
# Flip the direction of the acceleration
move_component.acceleration.x *= -1
##TODO: I don't know where I should actually set the momentum. :
# This was not the place
# if sign(_move_speed_modifier) == -1: # decreased speed modifier
# move_component.momentum.x = 0
# move_component.acceleration.x = _move_modifier_move_acceleration + _move_acceleration
# elif sign(_move_speed_modifier) == +1: # increased speed modifier
# move_component.momentum.x = abs(move_speed_modifier)
# elif sign(_move_speed_modifier) == +1: # increased speed modifier
# print("wait does it matter")
# else: # physics won't apply here
# print("uh")
# else:
# print("Direction changed")
# if move_component.momentum.x > abs(current_x_velocity):
# move_component.momentum.x = abs(current_x_velocity)
# flip the acceleration to apply against the momentum
#move_component.acceleration.x *= -1 * sign(move_component.momentum.x)
# If the movement direction changes and we have momentum
# print("Flip that thing!")
# move_component.momentum.x *= -1
# if sign(move_component.acceleration.x ) == sign(_move_speed_modifier):
# move_component.acceleration.x *= -1 * sign(current_x_velocity)
# We're going to adjust our move speed only to the modifier
move_component.momentum.x += move_component.acceleration.x * delta
jerk += _jerk_factor * delta
# Momentum should always be the inverse of the speed modifier
var new_move_speed :float = 0
if sign(_move_speed_modifier) == -1: # decreased speed modifier
@ -446,8 +471,5 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
#print(speed_multiplier)
# move_component.velocity.x = move_component.desired_movement_vector.x * _move_speed
move_component.velocity.x = move_direction * new_move_speed
#move_component.velocity = parent.move_and_slide(move_component.velocity, Vector2.UP)
var snap = Vector2.DOWN * 8
if move_component.velocity.y < -8:
snap = Vector2.ZERO
move_component.velocity = parent.move_and_slide_with_snap(move_component.velocity, snap , Vector2.UP, true)
move_component.velocity = parent.move_and_slide(move_component.velocity, Vector2(0, -1))

View File

@ -0,0 +1,59 @@
extends Actor
onready var actor_hurtbox = $Hurtbox_Component/CollisionShape2D
#var sound_effects = preload("res://src/playerC/resources/sound_effects.tres")
func _ready() -> void:
movement_state_machine.init_animated_actor(self, movement_animations, movement_component)
# Experimenting with sound based resources I did this and it worked
#sound_effect_player.stream = sound_effects.sounds["pew"]
#print(sounds.sounds["pew"])
#sound_effects.play()
# Trying something new with a custom resourse.
for i in SoundEffects:
sound_effects_dict[i.animation_name + str(i.frame_number)] = i.sound
print (sound_effects_dict)
func _unhandled_input(event: InputEvent) -> void:
movement_state_machine.process_input(event)
func _physics_process(delta: float) -> void:
movement_state_machine.process_physics(delta)
# #TODO: So much hack
# if direction.x != 0:
# gun.set_scale( Vector2(direction.x,1))
# Commented out to try parent transforms instead
# if direction.x < 0:
# var t = Transform2D()
# # Translation
# t.origin = Vector2(gun.offset_position.x * -1, gun.offset_position.y)
# gun.transform = t
# elif direction.x > 0:
# var t = Transform2D()
# # Translation
# t.origin = Vector2(gun.offset_position.x, gun.offset_position.y)
# gun.transform = t
# Attempting a Kinematic2D level scale for flip operations instead.
#self.transform
#self.scale.x = -1
func _process(delta: float) -> void:
movement_component.process(delta)
movement_state_machine.process_frame(delta)
play_sound_frame(movement_animations.animation , movement_animations.frame)
##TODO: I don't like player class having do do this.
## Figure out how to programatically signal subscribe
#func _on_AnimatedSprite_animation_finished():
# if movement_animations.frames.get_animation_loop(movement_animations.animation) == false:
# movement_state_machine.current_state.animation_index += 1

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=2]
[gd_scene load_steps=18 format=2]
[ext_resource path="res://src/components/Hurtbox_Component.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/state_machine_animated_actor.gd" type="Script" id=2]
@ -41,6 +41,9 @@ animations = [ {
"speed": 5.0
} ]
[sub_resource type="RectangleShape2D" id=74]
extents = Vector2( 14, 18.5 )
[sub_resource type="CircleShape2D" id=82]
[node name="ActorTemplate" type="KinematicBody2D"]
@ -49,7 +52,7 @@ script = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
frames = SubResource( 75 )
frame = 3
frame = 4
playing = true
flip_h = true
__meta__ = {
@ -65,6 +68,10 @@ __meta__ = {
}
}
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 0, -3.5 )
shape = SubResource( 74 )
[node name="movement_component" type="Node" parent="."]
script = ExtResource( 5 )