Enemies now make the player die (would be better with event) This resolves blobby detecting being killed whilst stomping
36 lines
1.1 KiB
GDScript
36 lines
1.1 KiB
GDScript
extends Actor
|
|
class_name Enemy
|
|
|
|
var player_entered_stomp = false
|
|
|
|
func _on_StompDetector_body_entered(body: Node) -> void:
|
|
if !body.is_in_group("player"):
|
|
return
|
|
player_entered_stomp = true
|
|
var incoming_vel_vector: Vector2 = body.velocity.normalized()
|
|
print(rad2deg(abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation)))))
|
|
if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(90):
|
|
print("too shallow entry")
|
|
body.die()
|
|
player_entered_stomp = false
|
|
return
|
|
signalManager.emit_signal("got_stomped")
|
|
remove_from_group("harmful")
|
|
$StompDetector.remove_from_group("weakpoint")
|
|
get_node("EnemyBody").disabled = true
|
|
die()
|
|
|
|
func die() -> void:
|
|
queue_free()
|
|
# TODO make batterr
|
|
levelState.kills += 1
|
|
|
|
func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
|
if area.is_in_group("harmful"):
|
|
get_node("EnemyBody").disabled = true
|
|
die()
|
|
|
|
func _on_EnemySkin_body_entered(body: Node) -> void:
|
|
if body.is_in_group("player") && !player_entered_stomp:
|
|
body.die()
|