Node2D 旋转不相对于父级

Node2D rotation not relative to parent

戈多 3.2.2

Godot 文档将 Node2D.rotation_degrees 定义为“相对于节点父节点的旋转度数”。

Scene.gd:

extends Node2D

func _ready():
    var child = Node2D.new()
    add_child(child)
    child.set_position(Vector2(1, 1))
    child.rotation_degrees = 90
    print(child.get_position())

播放场景。 输出:(1, 1) 预期:(1, -1)

如果我重写子项的 _draw() 方法使其显示,我可以看到它的绘图上下文绕着它自己的原点旋转。

但是鉴于文档,我希望它的位置和绘图上下文围绕其父对象的原点旋转。这似乎没有发生。

我在这里误解了几何学的一些基本知识吗?

child.rotation_degrees = 90 表示无论 parent 旋转什么,child 都会旋转 额外 90 度。

至于它围绕什么旋转,那要看情况了。如果旋转 parent,则 child 会相对于 parent 旋转。如果您旋转 child,它会相对于自身旋转,也就是“本地”旋转。

默认情况下,Node2D.new() 在本地是 centered,因此旋转会导致它原地旋转。调用 set_position 只会改变它与 parent 的关系。如果你想改变它的本地位置,你需要 translate 它。