Start to add platform actor, removed shared collision shape dependency among all actors. Whoops.

This commit is contained in:
Nitsud Yarg 2024-07-12 10:07:53 -07:00
parent 592c8dffb1
commit c21818caf3
8 changed files with 103 additions and 90 deletions

View File

@ -0,0 +1,25 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/Actors/Platform/PlatformVMove/states2/move.gd" type="Script" id=2]
[ext_resource path="res://src/Actors/Platform/PlatformVMove/states2/idle.gd" type="Script" id=3]
[node name="PlatformVMove" instance=ExtResource( 1 )]
[node name="AnimatedSprite" parent="." index="0"]
frame = 0
[node name="CollisionShape2D" parent="." index="1"]
position = Vector2( 0, 1 )
[node name="idle" parent="movement_state_machine" index="0"]
script = ExtResource( 3 )
animation_sequence = [ ]
fall_node = NodePath("")
move_node = NodePath("")
[node name="move" parent="movement_state_machine" index="2"]
script = ExtResource( 2 )
animation_sequence = [ ]
fall_node = NodePath("")
idle_node = NodePath("")

View File

@ -0,0 +1,30 @@
extends StateAnimatedActor
export (NodePath) var fall_node
export (NodePath) var move_node
onready var fall_state: State = get_node(fall_node)
onready var move_state: State = get_node(move_node)
func enter() -> void:
.enter()
# parent.set_hurtbox(true)
move_component.velocity.x = 0
if debug_state:
print(owner.name, " Move Component: ", move_component.desired_movement_vector.x)
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))
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

@ -0,0 +1,21 @@
extends StateAnimatedActor
export (NodePath) var fall_node
export (NodePath) var idle_node
onready var fall_state: State = get_node(fall_node)
onready var idle_state: State = get_node(idle_node)
func process_physics(delta: float) -> State:
move_actor_as_desired(delta)
if move_component.velocity.x == 0.0:
return idle_state
#Flip the character before tha actual move maybe.
parent.transform.x.x = move_component.get_movement_direction()
if !parent.is_on_floor():
return fall_state
return null

View File

@ -1,6 +1,5 @@
[gd_scene load_steps=18 format=2]
[gd_scene load_steps=17 format=2]
[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/Backgrounds/bgmuck.png" type="Texture" id=3]
[ext_resource path="res://src/Interactables/Chest.tscn" type="PackedScene" id=4]
@ -118,13 +117,6 @@ __meta__ = {
[node name="EnemyC2" parent="." instance=ExtResource( 7 )]
position = Vector2( 494, 39 )
[node name="ActorTemplate" parent="." instance=ExtResource( 1 )]
position = Vector2( 262, 44 )
__meta__ = {
"_edit_lock_": true
}
actor_type = "NPC"
[node name="HealthPickup" parent="." instance=ExtResource( 5 )]
position = Vector2( 226, 153 )

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=33 format=2]
[gd_scene load_steps=34 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,6 +122,9 @@ 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"
@ -144,10 +147,7 @@ __meta__ = {
}
}
[node name="CollisionShape2D" parent="." index="1"]
position = Vector2( -0.5, -2 )
[node name="movement_component" parent="." index="2"]
[node name="movement_component" parent="." index="1"]
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="4"]
[node name="Hurtbox_Component" parent="." index="3"]
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="6"]
[node name="EdgeDetection" type="RayCast2D" parent="." index="5"]
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="7"]
[node name="PlayerDetection" type="RayCast2D" parent="." index="6"]
enabled = true
cast_to = Vector2( 21, 0 )
collision_mask = 2
[node name="Hitbox_Component" parent="." index="8" instance=ExtResource( 4 )]
[node name="Hitbox_Component" parent="." index="7" instance=ExtResource( 4 )]
damage_amount = 10
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component" index="0"]
@ -218,16 +218,20 @@ position = Vector2( 18, -8.5 )
shape = SubResource( 23 )
disabled = true
[node name="GenericSender" parent="." index="9" instance=ExtResource( 5 )]
[node name="GenericSender" parent="." index="8" 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="10" instance=ExtResource( 7 )]
[node name="Health_Component" parent="." index="9" 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

@ -1,4 +1,4 @@
[gd_scene load_steps=126 format=2]
[gd_scene load_steps=127 format=2]
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/playerD/movement_component.gd" type="Script" id=2]
@ -18,6 +18,9 @@
[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( 15, 18.5 )
[sub_resource type="StreamTexture" id=90]
load_path = "res://.import/Mega.png-93dfe0790902b932f7b46f7b23c5d4e7.stex"
@ -547,7 +550,11 @@ script = ExtResource( 3 )
actor_type = "Player"
player_number = 1
[node name="AnimatedSprite" parent="." index="0"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="0"]
position = Vector2( 0, -3.5 )
shape = SubResource( 197 )
[node name="AnimatedSprite" parent="." index="1"]
position = Vector2( -1, -51 )
frames = SubResource( 196 )
animation = "idle_shoot"

View File

@ -1,59 +0,0 @@
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=18 format=2]
[gd_scene load_steps=17 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,9 +41,6 @@ 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"]
@ -52,7 +49,7 @@ script = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
frames = SubResource( 75 )
frame = 4
frame = 3
playing = true
flip_h = true
__meta__ = {
@ -68,10 +65,6 @@ __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 )