为什么我的path2d位置不更新?

时间:2018-07-01 08:07:50

标签: godot gdscript

我按照第一篇游戏文章http://docs.godotengine.org/en/3.0/getting_started/step_by_step/your_first_game.html

中的说明创建了新的path2d。

我想在屏幕上移动“盒子”,以便可以看到小怪如何生成,但是当我运行场景时,它不在屏幕上。

我创建了一个新的path2d,将其放置在屏幕中间,它的工作方式就像我想要的那样,但是现在我在编辑器中移动此路径并不会更新游戏中的位置。

这是怎么回事?

谢谢

func _on_mobtimer_timeout():
    $mobtimer.wait_time = 0.1 + randf() / 2
    $mobspawn/moblocation.set_offset(randi())

    var mob = Mob.instance()
    add_child(mob)
    var direction = $mobspawn/moblocation.rotation + PI/2
    mob.position = $mobspawn/moblocation.position
    direction += rand_range(-PI/8, PI/8)
    mob.rotation = direction
    mob.set_linear_velocity(Vector2(rand_range(200, 200 + score * 30), 0).rotated(direction))

enter image description here

2 个答案:

答案 0 :(得分:0)

Node2D的{​​{1}}属性是相对于其父级的position的属性。 Dodge The Creeps教程中的代码假定position位于MobPath,并且在该假设为假时失败。

在您的情况下,您要相对于0, 0占据MobSpawnLocation的位置,然后将其设置为新MobPath的全局位置。

幸运的是,Mob还有另一个属性,我们可以在这种情况下使用Node2D。可以这样使用:

global_position

http://docs.godotengine.org/en/stable/classes/class_node2d.html#member-variables

答案 1 :(得分:0)

这不是一个完整的解决方案,但是我发现了一个怪异的解决方法。如果您使用橙色框上的节点(在橙色和蓝色的交点处),则无需更改编辑器中的位置,还可以使用另一种方法来移动该框。

picture of orange box