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
它。
戈多 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
它。