21 lines
919 B
GDScript
21 lines
919 B
GDScript
extends Area2D
|
||
## Детектор направления столкновения для блоков (вопрос/кирпич).
|
||
## Реагирует, когда Fox (CharacterBody2D) касается блока, и определяет, снизу ли удар.
|
||
|
||
var block: Node = null
|
||
var triggered: bool = false
|
||
|
||
func _ready() -> void:
|
||
collision_layer = 4 # совпадает с parent layer
|
||
collision_mask = 1 # ловим Fox
|
||
body_entered.connect(_on_body_entered)
|
||
|
||
func _on_body_entered(body: Node) -> void:
|
||
if body.is_class("CharacterBody2D") and body.has_method("hit_coin"):
|
||
var fox := body as CharacterBody2D
|
||
# Fox находится ниже вершины блока => удар снизу
|
||
var block_top: float = get_global_position().y - 16.0
|
||
if fox.position.y > block_top and fox.velocity.y > 0.0:
|
||
if block != null and block.has_method("hit_from_below"):
|
||
block.hit_from_below()
|