2

我按照我的第一篇游戏文章中的说明创建了一个新的 path2d:http ://docs.godotengine.org/en/3.0/getting_started/step_by_step/your_first_game.html

我想移动屏幕上的“盒子”,这样我就可以看到小怪是如何产生的,但是当我运行场景时,它就离开了屏幕。

我创建了一个新的 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))

在此处输入图像描述

4

2 回答 2

0

ANode2Dposition属性是相对于它的父级的position。Dodge The Creeps 教程中的代码假定MobPath位于0, 0并且当该假设为假时失败。

在您的情况下,您将 aMobSpawnLocation的位置相对于MobPath然后将其设置为 newMob的全局位置。

幸运Node2D的是,我们可以在这些情况下使用另一个属性global_position。它可以这样使用:

mob.position = $mobspawn/moblocation.global_position

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

于 2018-07-18T10:30:38.107 回答
0

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

橙色盒子的图片

于 2018-07-18T19:41:17.980 回答