我按照第一篇游戏文章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))
答案 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)