Хотел реализовать игру в стиле «Мишени».
Двигаются мишени, ты по ним щелкаешь, они исчезают и дают очки.
Создаю сцену с Node2d — игровое поле и присваиваю ему такой скрипт:
main.gd
extends Node2D
var Target = preload("target.scn")
var SCORE=0
func _ready():
add_child(newTarget(500, 500))
add_child(newTarget(200, 340))
func increase_score(inc_val):
SCORE += inc_val
get_child("Score").set_text("Score: " + str(SCORE))
func newTarget(x, y):
var t = Target.instance()
t.set_pos(Vector2(x, y))
return t
Создаю сцену-мишень — Node2d и sprite2d в детях у него.
Node2d мишени задаю следующий скрипт:
target.gd
extends Node2D
func _ready():
# Initalization here
set_process_input(true)
func _input(ev):
if ev.type == InputEvent.MOUSE_BUTTON and ev.button_index==BUTTON_LEFT and !ev.is_pressed():
get_parent().increase_score(1)
В итоге куда бы я не щелкнул на основной сцене счетчик увеличивается на... 2. Т.е. как будто основная сцена передает свое событие всем детям, а мне нужно что-бы оно работало немного иначе, т.е. щелкнул на мишень, счетчик увеличился на 1, щелкнул не на мишень - ничего не происходит.
Как правильно обработать сцену?