java - AndEngine setRotationCenter 移动旋转的物体

标签 java android rotation andengine

我试图从一个点旋转一个对象,该点在旋转时会发生变化。

当我调用 setRotationCenter(float,float) 时,对象的图像移动到某个任意点。这只发生在旋转的对象上,我的意思是,如果我在旋转 = 0 的对象中调用 setRotationCenter,一切正常。

我的类扩展了 Sprite。 我没有覆盖 setRotationCenter。 我的AndEngine版本好久没更新了。

我发布了我正在做的事情和我得到的数字的日志。看着它们一切都应该没问题,但我实际上是在屏幕上看到我的对象沿着 vector v(1,1) 移动(注意这是旋转中心的增量)

log item touch event previous rotation 30.0
log item touch event previous rotation center 150.0: 150.0
log item touch event previous position 100.0: 150.0
log item touch event CALL TO setRotationCenter(151.0,151.0);
log item touch event current rotation 30.0
log item touch event current rotation center 151.0: 151.0
log item touch event current position 100.0: 150.0

log item touch event previous rotation 30.0
log item touch event previous rotation center 151.0: 151.0
log item touch event previous position 100.0: 150.0
log item touch event CALL TO setRotationCenter(152.0,152.0);
log item touch event current rotation 30.0
log item touch event current rotation center 152.0: 152.0
log item touch event current position 100.0: 150.0

最佳答案

这是预期的行为。 setRotationCenter 更改对象旋转的点。最初您的对象在 150,150 附近旋转 30 度,但随后您告诉它在 151,151 附近旋转 30 度。对象的旋转角度将继续看起来完全相同,但因为它现在围绕不同的点旋转,所以它看起来已经移动了。

如果您从一个零旋转的对象开始,以下两段代码都会使它最终处于相同的位置:

object.setRotationCenter(150, 150);
object.setRotation(30);
object.setRotationCenter(151, 151);

和:

object.setRotationCenter(151, 151);
object.setRotation(30);

请注意,如果您使用的是 AndEngine 的 GLES2-AnchorCenter 版本,则 setRotationCenter 的参数通常应在 0.0 到 1.0 的范围内,因为它们是对象宽度/高度的比例。 IE。 setRotationCenter(0.5f, 0.5f) 将使对象围绕其中心旋转。但如果您使用的是 GLES2 版本,那么您得到的可能是正确的。

关于java - AndEngine setRotationCenter 移动旋转的物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16459999/

相关文章:

java - 当未输入任何内容并按下按钮时 Android 应用程序崩溃

java - 使用 Canvas 的橡皮擦效果

android - 为什么 ListView 没有为正确的项目设置动画?

iphone - 如何将 3d View 旋转 360 度?

rotation - Gridmap Node set_cell_item() 瓦片对象的旋转

java - 未在 JAXB 生成的类中设置默认 boolean 值

java - 我想以编程方式获取 Android 中的应用程序崩溃信息,而不使用第 3 方应用程序或 bugsense 等 jars

Android View 旋转后宽高没有变化

java - 'Catching' OutOfMemoryError 完全解决了内存不足的问题?

java - Android:如何在应用程序中使用外部 MySQL 数据库