【发布时间】:2014-08-11 11:57:01
【问题描述】:
我有一个演员需要旋转 2 次。每次围绕不同的起源。但似乎演员只是用 setOrigin() 保存原点集,用 setRotation() 保存旋转集,并在绘制时计算它。因此,如果我只是将这些值设置为 2 倍,它只会覆盖旧值并且在绘图时不计算它。有什么方法可以围绕不同的原点进行多次旋转?
【问题讨论】:
我有一个演员需要旋转 2 次。每次围绕不同的起源。但似乎演员只是用 setOrigin() 保存原点集,用 setRotation() 保存旋转集,并在绘制时计算它。因此,如果我只是将这些值设置为 2 倍,它只会覆盖旧值并且在绘图时不计算它。有什么方法可以围绕不同的原点进行多次旋转?
【问题讨论】:
是的,你是对的,在你绘制你的演员之前你不会看到结果,这是因为旋转不会对演员的坐标或其他东西进行任何转换。旋转只是一个普通值,仅在演员绘制图形或有人查询演员边界框时使用,例如因此,每次有人需要时,都会发生所有旋转变换。
回到你的问题......如果你想对你的演员应用几个转换,你应该以某种方式累积它们,然后只改变一次演员的状态。
作为解决方案,您可以查看Group#applyTransform() 方法,它与Matrix4 一起提供,您可以在其中灵活配置所有转换。当然,您必须将您的演员放在 Group 对象中,这是一种缺点,但在利润方面,您将处理一个矩阵转换,该矩阵转换不适用于普通的 Actor。
希望这会有所帮助,祝你好运。
【讨论】: