add stomping
This commit is contained in:
38
scripts/components/stomp_damage_component.gd
Normal file
38
scripts/components/stomp_damage_component.gd
Normal file
@@ -0,0 +1,38 @@
|
||||
class_name StompDamageComponent
|
||||
extends Node
|
||||
|
||||
@export var damage: float = 0.25
|
||||
@export var area2d: Area2D
|
||||
@export var root: Node2D
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
if not area2d:
|
||||
printerr("No area2d assigned!")
|
||||
return
|
||||
if not root:
|
||||
printerr("No root assigned!")
|
||||
return
|
||||
|
||||
area2d.body_entered.connect(on_area2d_body_entered)
|
||||
|
||||
|
||||
func deal_damage(target: HealthComponent) -> void:
|
||||
target.decrease_health(damage)
|
||||
|
||||
|
||||
func on_area2d_body_entered(body: Node2D) -> void:
|
||||
if body.has_node("HealthComponent"):
|
||||
var health_component: HealthComponent = body.get_node("HealthComponent")
|
||||
if not health_component:
|
||||
printerr("No HealthComponent assigned!")
|
||||
return
|
||||
|
||||
if root.global_position.y < body.global_position.y:
|
||||
if root is PlayerController:
|
||||
var velocity: Vector2 = root.previous_velocity
|
||||
print("Velocity: ", velocity)
|
||||
if velocity.y > 0.0:
|
||||
deal_damage(health_component)
|
||||
print("Dealt damage to ", body)
|
||||
|
@@ -5,6 +5,7 @@ extends CharacterBody2D
|
||||
|
||||
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||
var last_direction: Vector2 = Vector2.RIGHT
|
||||
var previous_velocity: Vector2 = Vector2.ZERO
|
||||
|
||||
@onready var root = $Root
|
||||
@onready var coyote_timer: Timer = $CoyoteTimer
|
||||
@@ -62,6 +63,7 @@ func _physics_process(delta):
|
||||
else:
|
||||
velocity.x = move_toward(velocity.x, 0, speed)
|
||||
|
||||
previous_velocity = velocity
|
||||
move_and_slide()
|
||||
|
||||
func jump():
|
||||
|
Reference in New Issue
Block a user