LINUX.ORG.RU

Godot: Node2d передает события всем подсценам.

 , , godot script


0

3

Хотел реализовать игру в стиле «Мишени».
Двигаются мишени, ты по ним щелкаешь, они исчезают и дают очки.
Создаю сцену с 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, щелкнул не на мишень - ничего не происходит.

Как правильно обработать сцену?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.