Still working on a hit/hurtbox interactions.

This commit is contained in:
Nitsud Yarg 2024-06-02 20:14:51 -07:00
parent 225e42957f
commit 2ccd8bcb8b
7 changed files with 50 additions and 22 deletions

View File

@ -27,6 +27,7 @@ var sound_effects_dict: Dictionary
func _ready() -> void:
movement_state_machine.init_animated_actor(self, movement_animations, movement_component)
movement_component.attack_function = funcref(self, "attack")
# movement_component.player_number = player_number
# Experimenting with sound based resources I did this and it worked
@ -70,3 +71,13 @@ func play_sound_frame(animation: String, frame: int ):
sound_effect_player.stream = sound_effects_dict[sound_index]
sound_effect_player.play()
print(self.name, " Playing SE: ", sound_index)
func attack():
#print(self.name, ": It's not inheritence, it's funcrefs")
if movement_state_machine.current_state.name != 'attack':
if($movement_state_machine/attack):
movement_state_machine.change_state($movement_state_machine/attack)
if ($Hitbox_Component/CollisionShape2D):
#print(self.name, ": Found a hitbox")
var hit_box = $Hitbox_Component
hit_box.set_hitbox(true)

View File

@ -68,7 +68,7 @@ func set_hitbox(enabled: bool):
func shoot_projectile():
var is_shooting = false
is_shooting = gun.shoot(direction.x)
is_shooting = gun.shoot(transform.x.x)
func _on_Hurtbox_body_entered(body):

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=26 format=2]
[gd_scene load_steps=27 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]
[ext_resource path="res://src/state_animated_actor.gd" type="Script" id=3]
[ext_resource path="res://src/enemyC/attack.gd" type="Script" id=3]
[ext_resource path="res://src/components/Hitbox_Component.tscn" type="PackedScene" id=4]
[sub_resource type="StreamTexture" id=1]
load_path = "res://.import/botEnemy.png-46efd539a38730ff15fb4ddb087329c6.stex"
@ -110,7 +111,7 @@ animations = [ {
[sub_resource type="RectangleShape2D" id=22]
extents = Vector2( 10, 16 )
[sub_resource type="RectangleShape2D" id=21]
[sub_resource type="RectangleShape2D" id=23]
extents = Vector2( 9, 3.5 )
[node name="EnemyC" instance=ExtResource( 1 )]
@ -120,7 +121,7 @@ actor_type = "Enemy"
position = Vector2( 11, -7 )
frames = SubResource( 20 )
animation = "idle"
frame = 1
frame = 0
__meta__ = {
"_aseprite_wizard_config_": {
"layer": "",
@ -153,8 +154,11 @@ animation_sequence = [ "idle" ]
[node name="attack" type="Node" parent="movement_state_machine" index="2"]
script = ExtResource( 3 )
timeout_seconds = 3.0
debug_state = true
timeout_seconds = 2.0
animation_sequence = [ "attack" ]
fall_node = NodePath("../fall")
idle_node = NodePath("../idle")
[node name="move" parent="movement_state_machine" index="3"]
animation_sequence = [ "walk" ]
@ -176,11 +180,10 @@ enabled = true
cast_to = Vector2( 21, 0 )
collision_mask = 2
[node name="Hitbox_Component" type="Area2D" parent="." index="8"]
collision_layer = 128
collision_mask = 0
[node name="Hitbox_Component" parent="." index="8" instance=ExtResource( 4 )]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component" index="0"]
modulate = Color( 1, 0.596078, 0.121569, 1 )
position = Vector2( 18, -8.5 )
shape = SubResource( 21 )
shape = SubResource( 23 )
disabled = true

View File

@ -16,6 +16,8 @@ func process_physics(delta):
#print(owner.name, " wants to attack")
stop()
wants_to_attack = true
if attack_function.is_valid():
attack_function.call_func()
return
else:
wants_to_attack = false

View File

@ -1,6 +1,14 @@
class_name MovementComponent
extends Node
## Movement component
# attempts to interact with movement of the scene root without knowing what
# it is. It can be perhaps a static body or kinematicbody
# it doesn't actually move a node, that's what the state machine does
# but it does keep track of velocity
# I can't give it an actor node or a direct reference.
# It can use a number of detection components to help inform decisions.
export var debug_component: bool = false
onready var desired_movement_vector: Vector2 = Vector2(0,0)
@ -13,6 +21,8 @@ var velocity = Vector2(0,0)
#Can't use floats here, switched to constants.
#enum directions {UP = -1, DOWN = 1, LEFT, RIGHT}
var attack_function: FuncRef
const UP = -1.0
const DOWN = 1.0
const LEFT = -1.0

View File

@ -17,9 +17,9 @@ onready var gun = $Gun
# if movement_animations.frames.get_animation_loop(movement_animations.animation) == false:
# movement_state_machine.current_state.animation_index += 1
func _on_Hurtbox_area_entered(area):
print("Ouch.",area)
movement_state_machine.change_state($Controllers/state_machine/hurt)
func _on_Hurtbox_area_entered():
#print("Ouch.",area)
movement_state_machine.change_state($movement_state_machine/hurt)
func set_hurtbox(enabled: bool):
pass
@ -28,7 +28,8 @@ func set_hurtbox(enabled: bool):
func shoot_projectile():
var is_shooting = false
is_shooting = gun.shoot(movement_component.get_movement_direction())
print("Direction: ", transform.x.x)
is_shooting = gun.shoot(int(transform.x.x))
#func play_sound():
# sound_effects.stream = "res://assets/Sounds/crappy pew.wav"

View File

@ -6,8 +6,8 @@ onready var idle_state: State = get_node(idle_node)
func enter() -> void:
.enter()
parent.velocity.x = 0
parent.set_hurtbox(false)
move_component.velocity.x = 0
#parent.set_hurtbox(false)
#TODO: Error check if timer was actually instanced
state_timeout.start()
@ -25,12 +25,13 @@ func process_frame(delta: float) -> State:
func process_physics(delta: float) -> State:
parent.velocity.y += gravity * delta
move_component.velocity.y += gravity * delta
#parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
if (parent.direction.x > 0):
parent.velocity.x = 1 * move_speed
else:
parent.velocity.x = -1 * move_speed
parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1))
move_component.velocity = parent.transform.x * move_speed
# if (parent.direction.x > 0):
# parent.velocity.x = 1 * move_speed
# else:
# parent.velocity.x = -1 * move_speed
move_component.velocity = parent.move_and_slide(move_component.velocity, Vector2(0, -1))
return null