hel*_*ing 1 parent-child nodes gdscript godot
目前,我正在使用面向节点的方法制作纸牌游戏(想想《炉石传说》)。这意味着,每张卡牌都是一个节点,要将卡牌移动到指定位置(例如,玩家的手或战斗场),我需要在父节点之间移动子节点。
例如,要将一张牌从我的手牌移到战斗场,我会在手牌上调用remove_child(),在战斗场上调用add_child()。
现在,当涉及到让卡片传送到任何地方时,这非常有效。但是,我希望它们能够顺利地从一个父节点移动到另一个父节点。实现这一目标的最佳方法是什么?或者除了使用节点之外还有更好的方法来组织我的场景吗?
将Tween节点添加到场景中,然后从代码中您可以执行类似以下操作:
var position_start = card.global_position
var position_end = combat_field.global_position
var duration_in_seconds = 1.0
tween.interpolate_property(card, "global_position", position_start, position_end, duration_in_seconds, Tween.TRANS_LINEAR)
tween.start()
yield(tween, "tween_completed") # wait until move animation is complete
card.get_parent().remove_child(card)
combat_field.add_child(card)
card.position = Vector2() # reset local position after re-parenting
Run Code Online (Sandbox Code Playgroud)
card是您想要设置动画的节点。
combat_field是您希望卡移动到的节点。
tween是你的 Tween 节点。
演示:
我不知道你为什么要更改卡的父节点。也许,还有更简单的方法?
如果您将它们分配到不同的组怎么办?这样,您就可以根据组而不是父节点在代码中拥有不同的逻辑。
另一个想法是您可以创建一个单例类来跟踪游戏的状态。比如,哪些牌在玩家手中,哪些牌在战场上。