Libgdx 场景2d中的演员来源

Libgdx 场景2d中的演员来源,libgdx,Libgdx,我似乎没有正确理解Libgdx场景2d中的演员来源 我的理解如下: 如果我将一个参与者的x设置为0,那么它的左边缘将以相关度0进行渲染。现在,如果我把它的原点X设置为5,演员的第五个像素将在相关度0,换句话说,演员的左边缘将在-5 我的一些经验表明,情况并非如此。如果我将“原点”设置为5,左边缘将以某种方式在坐标5上渲染 有人能帮我理解这个问题吗。原点仅用于缩放和旋转。 这意味着,如果原点是P(0,0)(默认值),演员将围绕其左下角旋转和缩放。 如果您将其原点设置为中心(P(宽度/2,高度/2)

我似乎没有正确理解Libgdx场景2d中的演员来源

我的理解如下:

如果我将一个参与者的x设置为0,那么它的左边缘将以相关度0进行渲染。现在,如果我把它的原点X设置为5,演员的第五个像素将在相关度0,换句话说,演员的左边缘将在-5

我的一些经验表明,情况并非如此。如果我将“原点”设置为5,左边缘将以某种方式在坐标5上渲染


有人能帮我理解这个问题吗。

原点仅用于缩放和旋转。
这意味着,如果原点是P(0,0)(默认值),
演员将围绕其左下角旋转和缩放。
如果您将其原点设置为中心(P(宽度/2,高度/2)),则他将围绕其中心旋转和缩放。
相反,该位置始终相对于左下角,不受原点的影响。
如果要设置演员相对于其原点的位置,则需要使用原点作为偏移:

actor.setX(newPosX - actor.getOriginX());
actor.setY(newPosY - actor.setOriginY());
还请记住,将x原点设置为5,就像在您的示例中一样,不需要将演员的原点设置为第5个像素,而是设置为第5个单位。

如果使用
视口
,则不需要以像素为单位进行计算,这一点非常重要,因为您可以支持不同的分辨率和纵横比。

原点
仅用于缩放和旋转。
这意味着,如果原点是P(0,0)(默认值),
演员将围绕其左下角旋转和缩放。
如果您将其原点设置为中心(P(宽度/2,高度/2)),则他将围绕其中心旋转和缩放。
相反,该位置始终相对于左下角,不受原点的影响。
如果要设置演员相对于其原点的位置,则需要使用原点作为偏移:

actor.setX(newPosX - actor.getOriginX());
actor.setY(newPosY - actor.setOriginY());
还请记住,将x原点设置为5,就像在您的示例中一样,不需要将演员的原点设置为第5个像素,而是设置为第5个单位。

如果使用
视口
,则不需要以像素为单位进行计算,这一点非常重要,因为您可以支持不同的分辨率和纵横比。

问题是,在我的设置中,位置受原点的影响。我不在scene2d中使用任何布局,它仅用于事件等。在我的应用程序中,当我更改原点时,它会更改image/actor.BTW的原点,我尝试了setX和setY。但是,当你把它与行动结合起来时,就会出现一个问题。MoveToAction在其actor上执行getX和setX,使用setX的这个实现,这两个结果具有更改actor位置的不良效果。@Arash在您的情况下,原点会影响位置吗?这真的很奇怪,因为
Actor
的文档说:“原点相对于位置,用于缩放和旋转。”而且
setOrigin
没有设置
Actor
的位置。第二条评论:答案中的代码只是一个示例。要将其与
动作
s一起使用,您只需将
动作
的目标点更改为
原点
。@springrbura我知道这很奇怪,但它确实会影响我的演员的位置。看看代码,似乎它实际上应该。我最终覆盖了图像的绘制方法来解决问题。问题是,在我的设置中,位置受原点的影响。我不在scene2d中使用任何布局,它仅用于事件等。在我的应用程序中,当我更改原点时,它会更改image/actor.BTW的原点,我尝试了setX和setY。但是,当你把它与行动结合起来时,就会出现一个问题。MoveToAction在其actor上执行getX和setX,使用setX的这个实现,这两个结果具有更改actor位置的不良效果。@Arash在您的情况下,原点会影响位置吗?这真的很奇怪,因为
Actor
的文档说:“原点相对于位置,用于缩放和旋转。”而且
setOrigin
没有设置
Actor
的位置。第二条评论:答案中的代码只是一个示例。要将其与
动作
s一起使用,您只需将
动作
的目标点更改为
原点
。@springrbura我知道这很奇怪,但它确实会影响我的演员的位置。看看代码,似乎它实际上应该。我最终覆盖了图像的draw方法来解决这个问题